关于Ajax Get请求在IE下存在缓存问题

起源

同一份代码在chrome和ie下出现不同的结果,具体表现为:在ie下保存操作后,页面依然显示为未勾选状态。

思考

最初的时候一直思考是否是代码问题,一度在IE下debug整块代码,无果。后来观察了下三个请求均为get请求,于是转而思考,是否是因为get请求在ie下会有缓存问题。

解释

在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱。

  1. get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,
  2. post方式因为参数的不同,不会产生这个问题。

为了不受缓存影响,可以这样做:

在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数
在javascript发送的URL后加上 t=Math.random()

例如这样:

URL+"&"+"t="+Math.random();//或者new Date(); 
在 URL 参数后加上"?timestamp=" + new Date().getTime(); 

或者在请求参数data中添加:

data: {
                _t: new Date().valueOf() //加时间戳
                //_t: Math.random() 加随机数
            },

示例

  $.ajax({
            type: "get",
            dataType:"json",
            url: "$!{rc.contextPath}/parkledVerb/loadVerbData?id="+id,
            data: {
                _t: new Date().valueOf() //加时间戳
                //_t: Math.random() 加随机数
            },
            async: false,
            success: function (data) {
                ···
        });
最好的方法:
$.ajaxSetup({cache:false}) 

这样页面中所有的ajax请求时,都执行这个。就不必改已经完成的N个接口。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 29,022评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,261评论 1 92
  •   2005 年,Jesse James Garrett 发表了一篇在线文章,题为“Ajax: A new App...
    霜天晓阅读 945评论 0 1
  • 前端开发面试知识点大纲: HTML&CSS: 对Web标准的理解、浏览器内核差异、兼容性、hack、CSS基本功:...
    秀才JaneBook阅读 2,818评论 0 25
  • 【转载】CSDN - 张林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牍阅读 3,607评论 1 14

友情链接更多精彩内容