今天用到AJAX时,发现在IE下出现错误,发来才知道在ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取
get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题
我的需求如下:
当我改变院系下拉框时,编号自动改变,例如:编号0101,添加后再添加,则编号应该变化为0102,可是在IE下依旧为0101,在其他浏览器正常
解决方法:
1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random()
例如这样:URL+"&"+"t="+Math.random();或者new Date(); 在 URL 参数后加上 "?timestamp=" + new Date().getTime();
2: 在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
一般情况下,这里的XMLHttpRequest不会直接使用
你应该可以找到这样的代码 XXXXX.send(YYYYYY);
那么,就把它变成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);
3.用POST替代GET:不推荐
经过测试,这两种方法都可以解决问题,非常有效!