今日テスト作業をしていて、jqueryのgetJsonメソッドはFirefoxで実行すると返された結果を取得できますが、ie8でテストするとリクエストが送信されないことが判明したので、問題を発見しました。その結果、紆余曲折を経て、ネット上の記事で解決策を見つけたので、抜粋して少し修正してみました。
1 呼び出しごとに異なるURLにする
方法: パラメータに乱数を追加します。
例 1:
jQuery.getJSON("$!{Root}/a/a/s.ashx",{ID:"123456",Name:"john",random:Math.random()} ,function(responseText){}
例 2:
"xxx.aspx?randID="+Math.random
例 3:
"xxx.aspx?randID="+escape(new Date ())
2 キャッシュを False に設定します
$.ajax はキャッシュversion:
$.ajax({ type:"GET" url:'test.html' , cache:false, dataType:"html", success:function(msg){ alert(msg); } });
3 を label.html ファイルの先頭に追加します。 :
4.load関数はHTMLを呼び出すだけでなく、labels.phpなどのスクリプトを呼び出すこともできます。phpファイルのヘッダー関数を使用できます:
< ;?php
header("キャッシュ制御: キャッシュなし、 must-revalidate");
?>
5 get メソッドの代わりに post を使用します。
Post メソッドを使用する場合の注意点:
ヘッダーの Context-Type を application/x-www に設定します。 -form- urlencode は、通常、XmlHttpRequestobjectSetRequestHeader("Context-Type","application/x-www-) を使用して、サーバーがエンティティにパラメーター 変数 があることを認識します。
form-urlencoded;").
例: xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
パラメーターは名前と値の 1 対 1 です。 -1 つの対応するキーと値のペア。値の各ペアはアンパサンドで区切られます。たとえば、var name=abc&sex=man&age=18、var name=update.php?abc&sex=man&age=18 に注意してください。 var name=?abc&sex=man&age=18 書き込みメソッドがすべて間違っています;
パラメータは Send (parameter) メソッドで送信されます。たとえば、Get メソッドと Post メソッドを区別します。 get メソッドの場合は、$username です。 = $_GET["username"]; post メソッドの場合、 $username = $_POST["username"]; 6 サーバー側に header(" を追加します。 Cache-Control: no-cache、must -reva lidate");
7 Ajax リクエストを送信する前に追加します xmlHttpRequest.setRequestHeader("If-Modified-Since","0");8 ajax がリクエストを送信する前に追加します
xmlHttpRequest.setRequestHeader("キャッシュ制御","キャッシュなし");
以上がjQuery.getJSON のキャッシュ問題を解決するためのいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。