我正在使用JQuery通过ajax动态加载一些数据。每当用户启动ajax请求(即单击按钮,或加载页面等)时,我都会显示ajax loader gif。一旦ajax请求完成(或错误输出),我就隐藏了加载器映像。
这在大多数情况下都很有效。但我注意到(例如在IE7中)在页面加载时发送的ajax调用被缓存(我认为)。所以基本上当我刷新页面并且ajax调用可能被解雇时,IE将加载缓存的数据。因此,jquery .ajax()
函数中的成功(或错误)回调永远不会被调用,加载器映像将无限期地保持开启状态。什么是最好的解决方法?
答案 0 :(得分:3)
如果要在整个网站上停用ajax结果缓存,请使用.ajaxSetup():
$.ajaxSetup( { cache : false } );
然后,您可以根据具体情况覆盖行为:
$.ajax ({
...
cache: true,
...
答案 1 :(得分:2)
.ajax()
默认提供cache
属性true
:
$.ajax({
...
cache: false
});
http://api.jquery.com/jQuery.ajax/
作为替代方案,您可以在请求查询字符串中添加随机数。
$.ajax({
url: '/path/script.pl',
dataType: 'text',
type: 'GET',
data: {
q: ~~(Math.random()*200)
},
success: function(data){
// data
}
});
答案 2 :(得分:0)
jQuery.ajax
实际上有一个内置选项可以避免这一点:
$.ajax( { cache : false } );
文档包含在ajax方法中:jQuery.ajax()
来自文档:
cache Default: true, false for dataType 'script' and 'jsonp' If set to false it will force the pages that you request to not be cached by the browser.