$ .getJSON()不加载一致的数据结果

时间:2014-12-09 03:53:54

标签: javascript jquery json

我已尝试使用以下jQuery代码

$(this).ready(function(){   
    $.getJSON('json/summary.json?nocache=<?=md5(rand(1,50))?>', function(data) {

        var sold = data.sold;
        var price = data.averagePrice.toFixed(2);

    });
});

出于某种原因,当我刷新或点击页面时,销售的数字 - 在jquery页面中NOT summary.json - 波动不正确 - 它会给出低于它应该的数字。我不知道该怎么做。虽然我对它有所了解,但阻止缓存页面加载的最佳方法是什么......猜测上述内容并不是最好的方法。

BTW,summary.json返回类似的内容:

{&#34;出售&#34;:34,&#34; averagePrice&#34;:133.0323529411764}

感谢您的帮助。我尝试过很多事情都没有成功。

1 个答案:

答案 0 :(得分:0)

您缓存失效机制不正确,因为它可以在多次刷新时返回相同的值。您正在使用1和1之间的随机数的md5。因此多次尝试可以返回相同的随机值。

$(document).ready(function () {
    $.getJSON('json/summary.json?nocache=' + new Date().getTime(), function (data) {

        var sold = data.sold;
        var price = data.averagePrice.toFixed(2);

    });
});

另一种选择是为所有jQuery ajax请求全局设置缓存选项,如

$.ajaxSetup({cache:false})

然后

$(document).ready(function () {
    $.getJSON('json/summary.json', function (data) {

        var sold = data.sold;
        var price = data.averagePrice.toFixed(2);

    });
});

但是,如果您不想缓存特定资源值,则可以通过设置no-cacheno-store

等缓存标头来禁用服务器端的缓存