在IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据或新的数据。
以下几种方法可以解决:
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");
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:不推荐
用这些方法基本上能够解决 Ajax 在IE中的的缓存问题了。具体那种更好用,自己试试吧!
在Firefox中测试了一下,不存在这个问题。
另外,在Firefox中脚本是严格区分大小写的,IE并不严格区分。
例如:xmlHttpRequest.readyState其中“State”的“S”必须大写,否则在IE中正常的功能在Firefox中无法实现,会出现undefined错误。