如何在JQuery中为getJSON设置缓存false?

时间:2012-11-15 04:25:23

标签: jquery jquery-ui getjson browser-cache

我使用getJSON从服务器端获取结果但面临浏览器缓存问题。我希望缓存是假的。我在getJSON调用之前尝试使用它。

 $.ajaxSetup({
                cache: false
            })

但我没有得到预期的结果。它仍然显示旧的结果。 任何帮助将不胜感激。

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

3 个答案:

答案 0 :(得分:115)

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

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

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

希望有所帮助:)

答案 1 :(得分:76)

你可以使用这个,这将全局禁用缓存:

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

或者代替$.getJSON,仅为此类请求禁用缓存:

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

答案 2 :(得分:38)

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 

其中末尾的数字是代码被调用的时刻的时间戳,因此总是唯一的。