IE8 ajax缓存问题

娘希匹,又遇到缓存问题了。

下面的代码,在其他浏览器都是正常的,但是在IE8中出现诡异问题。


            $.ajax({
                url:dataUrl,
                data:encodeURI(currentjsonform),
                dataType:'JSON',
                success:function(item){
                    debugger;
                   ....
                }
            });

经过仔细排查,尼玛是 IE8 存在的 ajax 缓存问题。尼玛,执行到这里,实际上,并没有访问我们后台的代码,而是使用了以前缓存的结果,后台进行调试时,没有反应,才发现是这个问题!!!!IE8肯跌啊。

但是 奇怪的是,很多地方都是这样的代码,为什么只有这里被缓存,而其他地方没有缓存问题呢?

后来想通了:因为这个ajax调用每次返回的结果是一样的

解决方法

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带时间戳失效的情况。

原文地址:https://www.cnblogs.com/digdeep/p/5653240.html