IE8下Ajax缓存问题及解决办法
程序员文章站
2022-05-26 09:53:12
ajax简介
ajax即“asynchronous javascript and xml”(异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。...
ajax简介
ajax即“asynchronous javascript and xml”(异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。
ajax = 异步 javascript和xml(标准通用标记语言的子集)。
ajax 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
下面的代码,在其他浏览器都是正常的,但是在ie8中出现诡异问题。
$.ajax({ url:dataurl, data:encodeuri(currentjsonform), datatype:'json', success:function(item){ debugger; .... } });
经过仔细排查,尼玛是 ie8 存在的 ajax 缓存问题。尼玛,执行到这里,实际上,并没有访问我们后台的代码,而是使用了以前缓存的结果,后台进行调试时,没有反应,才发现是这个问题!!!!ie8肯跌啊。
但是 奇怪的是,很多地方都是这样的代码,为什么只有这里被缓存,而其他地方没有缓存问题呢?
解决方法:
1.
$.ajaxsetup({ cache: false });
2. 参数加上属性:cache:false
$.ajax({ url:dataurl, data:encodeuri(currentjsonform), datatype:'json', cache:false, success:function(item){ debugger; .... } });
3. 还可以在 url 后面加上时间戳等方法。
教训:
程序员真是应该:过马路要两边看!
不要太相信默认值,需要什么属性,一定要指明。所以最好每次都指明: cache:false,或者每个js 页面保证在最开始处执行一次:
$.ajaxsetup({ cache: false });
其实 路径带上时间戳或者随机数的方法,有时并不可靠!可能是浏览器会忽略它吧。反正ie8多次遇到 url带时间戳失效的情况。
以上所述是小编给大家介绍的ie8下ajax缓存问题,希望对大家有所帮助