场景:选中某条数据打开弹框,同时发送ajax请求取数据,修改后关闭弹框。再选中同一条数据打开弹框IE直接取上次缓存的数据,取不到修改后的新值。
在IE下用Ajax请求某一路径,通常会因为缓存的原因而返回上一次的结果,造成混乱,【即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题】 火狐下不会出现这种情况。
解决办法:
方法一、 在AJAX请求的页面后加个随机函数,可以使用随机时间函数做参数
在javascript发送的URL后加上t=Math.random()
例如这样:URL+"&"+"t="+Math.random();或者new Date();
在 URL 参数后加上 "?timestamp=" + new Date().getTime();
方法二、$.ajaxSetup({cache:false})
这句话作用于左右ajax请求,写了这句话之后就不用改已经写完的多个请求了。
以上两种方法都可以。