关于ajax请求在IE6,9下的缓存问题
2011-11-23 08:43
267 查看
最近的项目中,用到了很多ajax请求,大多用的都是jquery中的函数,如$.getJson(),为的是返回一个json格式的字符串便于后续操作。
这样写,看上去没有什么问题,在IE7、8,opera、fireFox下测试都没有什么问题。
但是,当在IE6和IE9下测试的时候,总是请求不到后台的新数据,然后怀疑是缓存问题,搜寻解决的办法,绝大多数朋友都说给页面的头部加如清楚缓存的代码。
还有在Jsp页面头部加入
这些可能只要是页面刷新的情况下是有作用的,但也只是清除页面的缓存,而不是请求缓存。ajax请求不刷新页面,假如这些没有作用。
调试的时候发现,在IE6下当两次请求的action路劲一样的时候,就会没有进入action中的方法,但是返回数据依然有,不过是旧的。
这样的话,请求的action的路劲后面加入一个随机数,比如:
&.getJson("/login.do?rand="+Math.random(),function(data){});如此一来,每次请求都会进入action,当然缓存问题也就迎刃而解了。
另外还遇到一种情况,就是将上面的$.getJson("/login.do",{rand:Math.random()},function(data){})写成这样竟然不起作用,只有向上面一样写,才可以。
难道这是偶然情况。
这样写,看上去没有什么问题,在IE7、8,opera、fireFox下测试都没有什么问题。
但是,当在IE6和IE9下测试的时候,总是请求不到后台的新数据,然后怀疑是缓存问题,搜寻解决的办法,绝大多数朋友都说给页面的头部加如清楚缓存的代码。
<META HTTP-EQUIV= "Pragma" CONTENT= "no-cache" > |
<META HTTP-EQUIV= "Cache-Control" CONTENT= "no-cache" > |
<META HTTP-EQUIV= "Expires" CONTENT= "0" > |
<% |
response.setHeader( "Pragma" , "No-cache" ); |
response.setHeader( "Cache-Control" , "no-cache" ); |
response.setDateHeader( "Expires" , 0 ); |
response.flushBuffer(); |
%> |
调试的时候发现,在IE6下当两次请求的action路劲一样的时候,就会没有进入action中的方法,但是返回数据依然有,不过是旧的。
这样的话,请求的action的路劲后面加入一个随机数,比如:
&.getJson("/login.do?rand="+Math.random(),function(data){});如此一来,每次请求都会进入action,当然缓存问题也就迎刃而解了。
另外还遇到一种情况,就是将上面的$.getJson("/login.do",{rand:Math.random()},function(data){})写成这样竟然不起作用,只有向上面一样写,才可以。
难道这是偶然情况。
相关文章推荐
- 关于前端ajax请求会缓存的问题
- 在ie中关于ajax请求获得数据缓存问题的解决办法
- 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题
- 关于IE的Ajax请求结果缓存的问题
- IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
- 关于session失效时springmvc拦截器拦截ajax请求失败的问题
- 关于HTML发送AJAX请求一直重复刷新页面问题
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
- ajax请求时读缓存的问题
- jquery 请求ie缓存,数据不更新的问题【ajax禁用缓存解决ie数据不更新的问题】
- 关于在form中通过ajax请求传递数据时出现异常的问题
- IE浏览器缓存Ajax请求之后不更新数据问题
- 关于ajax跨域请求问题解决
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题
- 关于ajax的本地请求json文件的问题
- IE浏览器下使用AJAX登陆接口请求缓存与登陆不了的问题解决
- ajax发送请求,解决缓存问题
- 关于ajax请求访问,如网络不稳定时发生的问题
- 使用ajax请求后端程序时,关于目标程序路径问题
- Ajax中请求被缓存的问题