ajax的IE cache issue
运用Ajax做了一个名字检验,第一次是有效的,但是提交过后,再检验一次,结果就不对了,是由于IE的cache的原因。 function verify() { 原理: Firefox 每次 request 都会重新再回一次 server 取得最新的数据,但是 IE 就不一样了,它会 cache 住之前得到的数据,只有第一次 request 时会真正的去 server 读取数据,导致ajax数据不会随时间而更新…. 解决方案(从网上收集的): 1、在服务端加 header("Cache-Control: no-cache,must-revalidate"); 或者用下面的组合更好一些: header("Expires:Sat,1Jan200500:00:00GMT");
header
(
"
Last-Modified:
"
.
gmdate
(
"
D,dMYH:i:s
"
)
.
"
GMT
"
);
header ( " cache-Control:no-cache,must-revalidate " ); header ( " Pragma:no-cache " ); 2、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0"); 3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache"); 4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了 5、第四种方法和第三种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime(); //推荐使用这种方式,我用的就是这种,个人认为比较方便。 6、用POST替代GET:不推荐 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |