GetJSONを使用してサーバー側から結果を取得していますが、ブラウザーのキャッシュの問題に直面しています。キャッシュをfalseにしたい。 getJSON呼び出しの直前にこれを使用してみました。
$.ajaxSetup({
cache: false
})
しかし、期待した結果が得られません。まだ古い結果が表示されます。任意の助けをいただければ幸いです。
また、.ajaxを使用するなど、他のソリューションも特定しましたが、実際には使用したくありません。
コードを有効にするにはトリガーが必要です。
これにより、将来のすべてのajaxでキャッシュを無効にできます
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
それが役に立てば幸い :)
これを使用して、キャッシュをグローバルに無効にすることができます。
$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
または、$.getJSON
の代わりに、そのようなリクエストに対してのみキャッシュを無効にします:
$.ajax({
cache: false,
url: "/path/to.json",
dataType: "json",
success: function(data) {
...
}
});
sementeとbonesnatchの答えは正しいですが、$。getJSONなどを使用したい場合はキャッシュを利用します(すべての呼び出しでキャッシュをfalseに設定したくない)が、 1回の呼び出しで、$。getJSON()のデータプロパティにタイムスタンプを挿入できます。リクエストのクエリ文字列に一意の値を追加すると、リクエストは常に一意であり、ブラウザによってキャッシュされません-常に最新のデータを取得できます。
ロングバージョン:
var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';
$.getJSON(url, data);
すべて1つのバージョンで:
$.getJSON('/some/path', {_: new Date().getTime()});
どちらも次のリクエストになります。
/some/path.json?_=1439315011130
ここで、末尾の数字はコードが呼び出された瞬間のタイムスタンプであり、常に一意です。