Kje*_*din 4 ajax jquery caching
我有一个AJAX调用,它根据简单的标准参数(如一年中的月份)从不断变化的数据库中返回值.在IE中,此函数返回缓存的数据,这是它永远不应该的.我监控了服务器端,客户端没有联系它.
现在,我的标题问题已经以不同的方式被问到,这里已经多次了.前两个解决方案是:
cache: false但事情是,这cache: false不起作用,至少不在我的应用程序中.另一方面,传递一个唯一的字符串来防止缓存,似乎是一个快速修复黑客.我不喜欢它.那么在ajax调用上阻止缓存的正确方法是什么?
Ajax调用在防止缓存方面不起作用:
$.getJSON("myURL", {
json : jsonDataObject,
cache: false
}).success(function(data) {
//do something with data
});
Run Code Online (Sandbox Code Playgroud)
$.ajaxSetup({ cache: false });在调用发生之前我也试过自己调用它,但是没有效果......
And*_*ndy 10
首先,您认为cache在$.getJSON()通话中设置为false的方式不正确.您将一个键/值对传递给服务器,因此请求URL将如下所示site.com/resource?cache=false.
您需要使用该$.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.
}
});
Run Code Online (Sandbox Code Playgroud)
在我看来,这不是一个快速修复或黑客,这是确保您从服务器获得新响应的正确方法.
如果您不想每次都这样做,那么您可以使用自己的包装函数:
$.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
});
};
Run Code Online (Sandbox Code Playgroud)
然后你就可以把你的电话换成$.getJSON()了$.getJSONUncached()
| 归档时间: |
|
| 查看次数: |
14771 次 |
| 最近记录: |