JQuery ajax加载器和浏览器缓存

时间:2010-10-11 17:14:43

标签: javascript jquery ajax

我正在使用JQuery通过ajax动态加载一些数据。每当用户启动ajax请求(即单击按钮,或加载页面等)时,我都会显示ajax loader gif。一旦ajax请求完成(或错误输出),我就隐藏了加载器映像。

这在大多数情况下都很有效。但我注意到(例如在IE7中)在页面加载时发送的ajax调用被缓存(我认为)。所以基本上当我刷新页面并且ajax调用可能被解雇时,IE将加载缓存的数据。因此,jquery .ajax()函数中的成功(或错误)回调永远不会被调用,加载器映像将无限期地保持开启状态。什么是最好的解决方法?

3 个答案:

答案 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.