ajax cache 无效,ajax的 IE cache 相关问题解决

该博客探讨了在Internet Explorer(IE)浏览器中使用Ajax进行数据验证时遇到的缓存问题,导致第二次验证结果不准确。作者指出,IE在后续请求中可能使用缓存的数据而非实时更新。为解决此问题,提出了几种解决方案,包括在URL中添加时间戳、设置HTTP头禁用缓存,以及使用POST请求代替GET等。这些方法旨在确保在每次请求时都能获取到服务器的最新数据。
摘要由CSDN通过智能技术生成

运用Ajax做了一个名字检验,第一次是有效的,但是提交过后,再检验一次,结果就不对了,是由于IE的cache的原因。

复制代码 代码如下:

function verify() {

$.ajax({

//issue for IE cache; timestamp=" + new Date().getTime()

url:"checkGroupName?timestamp=" + new Date().getTime(),

async: true,

data:"groupName=" + $("#cn").val()+"&groupTypeForDetail="+$("#groupType").val()+"&prefix="+$("#p").val(),

dataType:"html",

success:function(data){

if(data==1){

$("#result").html("Group name["+$("#p").val()+ $("#cn").val()+"]Valid");

$("#email").val($("#p").val()+ $("#cn").val()+$("#emailHidden").val());

$('#subData').removeAttr("disabled");

}else if(data==2){

$("#result").html("Group name["+$("#p").val()+ $("#cn").val()+ "]already existed.");

$('#subData').attr('disabled',"true");

}else{

$("#result").html("Group name can not be empty.");

$('#subData').attr('disabled',"true");

}

}

});

}

原理:

Firefox 每次 request 都会重新再回一次 server 取得最新的数据,但是 IE 就不一样了,它会 cache 住之前得到的数据,只有第一次 request 时会真正的去 server 读取数据,导致ajax数据不会随时间而更新….

解决方案(从网上收集的):

1、在服务端加 header("Cache-Control: no-cache, must-revalidate"); 或者用下面的组合更好一些:

复制代码 代码如下:

header("Expires: Sat, 1 Jan 2005 00:00:00 GMT");

header("Last-Modified: ".gmdate( "D, d M Y H:i:s")."GMT");

header("cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");

2、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");

3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了

5、第四种方法和第三种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime(); //推荐使用这种方式,我用的就是这种,个人认为比较方便。

6、用POST替代GET:不推荐

时间: 2013-03-30

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值