2012-02-11 6 views
0

XML情報を表に表示するページがあります。 XMLファイルはサーバー側で、PHPを使用してドロップダウンボックスを使用してファイル名とデータを取得しています。 JSONは、名前をドロップダウンに配置し、DOMを使用してXMLを送信します。それはすべてのブラウザで正常に動作します。PHP IE9 XMLの問題

私のエントリの追加機能に問題があります。 ChromeまたはFirefoxでエントリを追加すると、そのテーブルが次に選択されたときに表示されます。しかし、IE9では動作しません。エントリはxmlファイルに追加されますが、IEでこれらの変更を表示するには、新しいタブを開く必要があります。単にリフレッシュしても機能しません。

header('Location: ./client2.html'); 

IEのために、ここで追加する必要があるか、そこがどこかに問題があるものがある:このスクリプトにリダイレクトするには、私は、ヘッダー機能を使用しています。ファイルが選択されたときにデータを取得するPHPを追加しました。それは、キャッシングの問題だ場合

ini_set('display_errors',1); 
error_reporting(E_ALL); 

/* gets the selected file to use to return data */ 
$xml_filename = './XML/'.$_REQUEST['file']; 
$xml = simplexml_load_file($xml_filename); 

/* gets the root of the selected file */ 
$rootname = $xml->getName(); 
/* gets the children in that root */ 
$children = $xml->children(); 
$firstchild = $children[0]; 

// gets the table headings 
$data = '{"headings":['; 
foreach ($firstchild as $elem) 
{ 
    $data = $data.'"'.$elem->getName().'",'; 
} 

// removes trailing ',' 
$data = substr_replace($data,"",-1); 
$data = $data.'],'; 

// gets the cell values 
$data = $data. '"vals":['; 
foreach ($children as $child) 
{ 
    $data = $data.'['; 
foreach ($child as $elem => $vals) 
{ 
    $data = $data.'"'.$vals.'",'; 
} 
$data = substr_replace($data,"",-1); 
$data = $data.'],'; 
} 

// removes trailing ',' 
$data = substr_replace($data,"",-1); 
$data = $data.']}'; 

/* sends created JSON string back to client */ 
echo $data; 
+0

キャッシングの問題のような音ですか? –

+0

それは私が思ったものです。ブラウザでページをキャッシュできないようにするにはどうすればよいですか? –

+0

それはキャッシングの問題だった。私が修正できる唯一の方法は、ドキュメント準備が整ったAjaxに '$ .ajaxSetup({cache:false})'を配置することでした。 –

答えて

0

が、それは、キャッシングの問題だったが判明します。 JavaScriptのdocument.ready()セクションに$.ajaxSetup({cache:false})を追加する必要がありました。他に何も働かないようでした

+0

ブラウザに新しいファイルとして認識されるように、リクエストをランダムな値で追加することもできます。 –

0

、あなたはこのように、header()コールにランダムな文字列を追加してみてください:

$random_str = sha1(uniqid(mt_rand(), true)); 
header('Location: ./client2.html?' . $random_str); 
exit(); 
+0

URLにランダムなデータを追加して、キャッシュの問題を回避することは最適な解決策ではありません。 正しい方法は、[Cache-control http header](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9)を使用することです。 – remy

+0

私はそうは思わない私はあなたのソリューションを使用し、同じ問題を抱えていたのでキャッシングの問題。 –

+0

私は、ドロップダウン値が変わったときにデータを取得するphpを追加しました。多分それは問題です。私はランダムな文字列とキャッシュ制御の両方のソリューションを無駄にしようとしました。 –