关于解决JQuery发送Ajax请求后,IE缓存数据不更新的问题
dbCounter); }}/** Ajaxリクエストを発信し、DBのレコード件数を取得する */function getDbCounter(){ var counter; $.ajaxSetup({ async:false // Disable caching of AJAX responses */ //cache: false }); $.get( "RealtimeHandleAjaxAction.do", //"RealtimeHandleAjaxAction.do?t=" + new Date().toTimeString(), //"RealtimeHandleAjaxAction.do" + getRandomString(), function(data){ counter = data.dbChangeCounter; }, dataType = "json" ); return counter;}
[即get方式时,获取数据,因发送参数和地址都一致,故IE浏览 器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题]
而FF和Chrome下不会出现这种情况。
?
为了不受缓存影响,解决方法:
一、改变IE访问策略
Internet选项--浏览历史记录--设置-- Internet 临时文件的选项改为每次访问网页时也可以
?
二、通过为URL地址添加后缀
在AJAX请求的页面后加个随机函数,例如我们可以使用随机时间函数。在javascript发送的URL后加上。
随机函数代码例:
三、改变jQuery的Ajax设置另外我们还可以这样设置:
$.ajaxSetup({
cache:false
})
实际上jQuery的这个机制也是通过为请求地址添加不同的查询字符串后缀来实现的。
?
1 楼 panpan2011 2013-09-17 缓存问题解决。 2 楼 MrLee23 2013-09-17 日本人的代码也不过如此嘛,哈哈哈