jqueryのgetJsonメソッドは、サーバーへの最初の要求の後にキャッシュから直接同じリクエストを読み込み、データベースへのリクエストは行いません。
直す方法は以下の通りです:
1 通話ごとにURLを異なるものにする 方法:パラメータに乱数を加えます。 例1: jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){} 例2: "xxx.aspx?randID="+Math.random 例3: "xxx.aspx?randID="+ escape(new Date()) 2 キャッシュをFalseに設定 $.Ajax uncached version: $.Ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){ alert(msg);
} }); 3. labels.htmlファイルの上部に以下の文を含める:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1"> 4. ロード関数はHTMLだけでなく、labels.phpのようなスクリプトも呼び出せます。phpファイルのヘッダー関数を利用できます。
<?php
ヘッダー("Cache-Control: no-cache, must-revalidate");
?> 5 getではなくpostを使う方法。 Post方法を使う際には、以下の点に注意する必要があります: ヘッダーのContext-Typeをapplication/x-www-form-urlencodeに設定し、サーバーがエンティティ内にパラメータ変数があることを認識できるようにします。 通常、XmlHttpRequestオブジェクトのSetRequestHeader("Context-Type","application/x-www- form-urlencoded)を使用します。 ")。 例:
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); パラメータは名前/値に対応するキー-値ペアで、各値のペアは>記号で区切られています。 例えば、var name=abc&sex=man&age=18、var name=update.phpに注目してください。
abc&sex=man&age=18 と var name =?abc&sex=man&age=18 は誤って表記されています。 引数はSendメソッドで送信されます。例:xmlHttp.send(name); getメソッドの場合は、直接xmlHttp.send(null)を使い、
サーバー側のリクエストパラメータは、GetとPostを区別します。 もしgetメソッドであれば、$username = $_GET["username"]; もしそれが投稿方式なら、$username = $_POST["username"]; 6 サーバー側でAdd header(「Cache-Control: no-cache, must-reva lidate」); 7 ajaxがリクエストを送信する前にxmlHttpRequest.setRequestHeader("If-Modified-Since","0")を追加; 8 ajax がリクエストを送信する前に xmlHttpRequest.setRequestHeader("Cache-Control","no-cache")を追加;
|