重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关ajax的 IE cache 相关问题解决是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联建站沟通电话:028-86922220,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联建站网页制作领域10多年,包括食品包装袋等多个领域拥有丰富的网站运维经验,选择创新互联建站,为网站锦上添花。运用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:不推荐
以上就是ajax的 IE cache 相关问题解决是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。