如何在jQuery中为getJSON设置cache false?

问题描述 投票:72回答:3

我正在使用getJSON从服务器端获取结果,但面临浏览器缓存问题。我希望缓存为假。我在getJSON通话之前尝试使用此功能。

 $.ajaxSetup({
                cache: false
            })

但是我没有得到预期的结果。它仍然显示旧结果。

我还确定了其他一些解决方案,例如使用.ajax,但我真的不想使用它。

jquery jquery-ui getjson browser-cache
3个回答
118
投票

您的代码只需要一个触发器就可以启用。

这将允许您在以后的所有ajax中禁用高速缓存

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

希望有帮助:)


76
投票

您可以使用任何一种,这将全局禁用缓存:

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

或那个,而不是$.getJSON,仅针对此类请求禁用缓存:

$.ajax({
    cache: false,
    url: "/path/to.json",
    dataType: "json",
    success: function(data) {
        ...
    }
});

39
投票

semente和bonesnatch的答案是正确的,但是如果您想使用$ .getJSON和其他地方,请利用它的缓存功能(您不想为所有调用将缓存设置为false),但是您只是想破坏缓存对于单个调用,您可以将时间戳添加到$ .getJSON()的data属性中。通过在请求的查询字符串中添加唯一值,请求将始终是唯一的,并且不会被浏览器缓存-您将始终获取最新数据。

长版:

var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';

$.getJSON(url, data);

多合一版本:

$.getJSON('/some/path', {_: new Date().getTime()});

均导致以下请求:

/some/path.json?_=1439315011130 

末尾的数字是调用代码时的时间戳记,因此将始终是唯一的。

© www.soinside.com 2019 - 2024. All rights reserved.