IE浏览器中ajax使用缓存数据的问题
2014-11-03 11:46
267 查看
今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间。
查了一下这才发现IE一直存在这个问题,内部原因是:当第一次请求数据时能顺利返回,第二次以后IE会默认使用上次的缓存数据,这就造成了每次发送请求后返回的数据没有更新的原因。
解决方法:
1.最直接有效的就是在请求页后面加上随机函数,随机函数可以是Math.random(),也可以是new Date().getTime();这样URL每次都是新的。
之前代码:XHR.open('get', 'demo.php', false);
改进代码:XHR.open('get', 'demo.php?rand='+new Date().getTime(), false); //用new Date().getTime();
或:xhr.open('get', 'demo.php?rand='+Math.random(), false); //用Math.random();
2.在发送请求send();前加一行代码:(XHR对象).setRequestHeader("If-Modified-Since","0");
3.据说改用post提交方式也能解决这个问题,但我试了一下发现不行,不知为何。还有在header上设置禁止缓存等方法。时间仓促,这些方法日后详细查询。
查了一下这才发现IE一直存在这个问题,内部原因是:当第一次请求数据时能顺利返回,第二次以后IE会默认使用上次的缓存数据,这就造成了每次发送请求后返回的数据没有更新的原因。
解决方法:
1.最直接有效的就是在请求页后面加上随机函数,随机函数可以是Math.random(),也可以是new Date().getTime();这样URL每次都是新的。
之前代码:XHR.open('get', 'demo.php', false);
改进代码:XHR.open('get', 'demo.php?rand='+new Date().getTime(), false); //用new Date().getTime();
或:xhr.open('get', 'demo.php?rand='+Math.random(), false); //用Math.random();
2.在发送请求send();前加一行代码:(XHR对象).setRequestHeader("If-Modified-Since","0");
3.据说改用post提交方式也能解决这个问题,但我试了一下发现不行,不知为何。还有在header上设置禁止缓存等方法。时间仓促,这些方法日后详细查询。
相关文章推荐
- IE浏览器中ajax使用缓存数据的问题
- IE浏览器使用ajax时严重的缓存问题。
- IE浏览器下AJAX缓存问题导致数据不更新的解决办法
- ajax在IE浏览器中请求的数据不正确,缓存问题
- IE浏览器缓存Ajax请求之后不更新数据问题
- IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决
- 【原】使用ajax的get异常获取数据的时候,IE浏览器总是有缓存
- jQuery UI Autocomplete 使用 ajax 方法传输Json数据出现乱码问题的解决
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- jQuery发送ajax请求,IE有缓存,数据不更新问题
- 注册登录过程点滴(三):解决MVC3中使用Ajax.BeginForm会重复提交数据的问题 推荐
- 【郭林专刊】jQuery中ajax的使用和缓存问题解决
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- 使用HTML5 跨域共享特性解决AJAX跨域数据同步问题
- 关于使用AJAX获取数据时,由于IE缓存而导致数据不更新,串数据的问题!
- 解决使用Ajax时浏览器的缓存问题
- 在使用AJax时用JSON数据提交给服务端时。JSON.stringify()在IE6下不能使用的问题
- 注册登录过程点滴(三):解决MVC3中使用Ajax.BeginForm会重复提交数据的问题