如何设置缓存假的的getJSON在JQuery中?(How to set cache false f

2019-06-21 04:19发布

我使用的getJSON来从服务器端的结果,但面临的浏览器缓存的问题。 我想缓存是假的。 我想只是我的getJSON调用之前用这个。

 $.ajaxSetup({
                cache: false
            })

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

我还发现了一些其他的解决方案,如使用阿贾克斯,但我真的不希望使用它。

Answer 1:

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

这将允许你在今后所有的AJAX禁用缓存

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

希望能帮助到你 :)



Answer 2:

您可以使用这个,这将在全球范围禁用缓存:

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

或者,而不是$.getJSON ,禁用只是这种请求的缓存:

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


Answer 3:

semente的和bonesnatch的答案是正确的,但如果你想使用$ .getJSON和其他地方利用它的缓存(你不想设置缓存为false,所有呼叫),但你只想胸围在缓存中单呼,你可以注入时间戳到$ .getJSON的数据属性()。 通过增加一个独特的价值,以请求的查询字符串,请求将永远是独一无二的,而不是由浏览器缓存 - 你总是会得到的最新数据。

龙版本:

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 

其中在最后的数字是该代码被调用,因此将永远是独一无二的时刻的时间戳。



文章来源: How to set cache false for getJSON in JQuery?