この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12520|答える: 2

[Jquery] [Turn] to jQuery.getJSON キャッシュ問題

[リンクをコピー]
掲載地 2015/09/05 10:21:58 | | |
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")を追加;




先の:c# 「CD」→「Operation Success」に変換
次に:html5フォームに基づくプラグインのjQuery検証 html5
 地主| 掲載地 2015/09/05 10:23:09 |
url?username=test&aaa= Math.random()
 地主| 掲載地 2015/09/05 10:24:24 |
$.getJsonメソッド同じページを繰り返しリクエストすると、キャッシュからはデータのみが読み込まれ、URLの後に動的パラメータを毎回付ける必要があります
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
パラメータリストのパラメータを変更することは無効です。
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = new Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
これはブラウザのキャッシュメカニズムに関連しており、ページをキャッシュしない設定もでき、このパラメータを使わないようにすることもできます。
obj.src='rand.action?d='+timeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='はっきり見えない? 一つ変えて! 幅=50 高さ=22>
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com