我使用getJSON從服務器端獲取結果,但面臨瀏覽器緩存問題。我想緩存是假的。我在我的getJSON調用之前嘗試使用它。如何在JQuery中爲getJSON設置緩存false?
$.ajaxSetup({
cache: false
})
但是我沒有得到預期的結果。它仍然顯示舊的結果。 任何幫助將不勝感激。
我還確定了一些其他解決方案,如使用.ajax,但我真的不想使用它。
我使用getJSON從服務器端獲取結果,但面臨瀏覽器緩存問題。我想緩存是假的。我在我的getJSON調用之前嘗試使用它。如何在JQuery中爲getJSON設置緩存false?
$.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's和bonesnatch的回答是正確的,但是如果你想使用$ .getJSON和其他地方利用它的緩存(你不想爲所有的調用設置緩存爲false),但是你想破壞緩存僅用於一次調用,您可以將時間戳注入$ .getJSON()的data屬性中。通過爲請求的查詢字符串添加一個唯一值,該請求將始終是唯一的,不會被瀏覽器緩存 - 您將始終獲取最新數據。
龍版本:
var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';
$.getJSON(url, data);
All in one的版本:
$.getJSON('/some/path', {_: new Date().getTime()});
無論結果如下要求:
/some/path.json?_=1439315011130
,其中在最後的數字是時間戳代碼被調用的時刻,因此將始終是唯一的。
我會說遠遠地解決問題的最佳解決方案。你不需要改變你的javascript,也不需要改變全局配置,只需要傳入一個簡單的額外參數即可。 –
這設置它是全球性的,這是不好的,可以影響其他在你的程序中的**調用**需要緩存 – vsync
爲什麼你會等待$(document).ready來設置該選項? –
@helloChris - 這是jQuery的一個很好的解釋 「一個頁面在文檔」準備就緒「之前無法安全地進行操作。jQuery檢測到這個狀態準備就緒,代碼包含在$(document).ready()只有在頁面文檔對象模型(DOM)準備好執行JavaScript代碼時纔會運行。「 [閱讀關於API的更多內容](https://learn.jquery.com/using-jquery-core/document-ready/) – bonesnatch