首先,你认为你的设置方式cache
在你的虚假$.getJSON()
调用不正确。您将键/值对传递给服务器,因此请求 URL 将如下所示site.com/resource?cache=false
.
您需要使用以下方式提出请求$.ajax() http://api.jquery.com/jquery.ajax/方法,这样你就可以实际设置cache
选项false
。然而,这一切所做的就是所谓的“快速修复黑客”。它添加了_={current_timestamp}
到查询字符串,以便请求不会被缓存。
$.ajax({
url: 'myurl',
type: 'GET',
dataType: 'json',
data: jsonDataObject,
cache: false, // Appends _={timestamp} to the request query string
success: function(data) {
// data is a json object.
}
});
在我看来,这不是快速修复或黑客攻击,而是确保您从服务器获得最新响应的正确方法。
如果您不想每次都这样做,那么您可以使用自己的包装函数:
$.getJSONUncached = function (url, data, successCallback) {
return $.ajax({
url: url,
type: 'GET',
dataType: 'json',
data: data,
cache: false, // Appends _={timestamp} to the request query string
success: successCallback
});
};
然后你可以将你的呼叫替换为$.getJSON()
with $.getJSONUncached()