ajax的 IE cache 相关问题解决

2016-02-19 09:42 6 1 收藏

下面是个简单易学的ajax的 IE cache 相关问题解决教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

运用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("font color='green'Group name["+$("#p").val()+ $("#cn").val()+"]Valid/font");
$("#email").val($("#p").val()+ $("#cn").val()+$("#emailHidden").val());
$('#subData').removeAttr("disabled");
}else if(data==2){
$("#result").html("font color='red'Group name["+$("#p").val()+ $("#cn").val()+ "]already existed./font");
$('#subData').attr('disabled',"true");
}else{
$("#result").html("font color='red'Group name can not be empty./font");
$('#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:不推荐

来源:http://www.tulaoshi.com/n/20160219/1591783.html

延伸阅读
最近学习JSP,使用了MYSQL数据库。可是乱码问题一直困扰着我。 自己以为只要从页面到数据库都使用一种编码(比如UTF-8)应该就不会产生乱码了。结果我的中文果然不是纯乱码了,而变成中文数字+英文乱码的形式。 解决过程很艰辛,走了不少弯路。最后发现最根本的原因出在EMS2007身上,他本身对中文支持的不好!直接用EMS2007添加...
1  安装MYSQL后更改了ROOT的密码后用  net startmysql  启动时我就遇到了这样的问题.使用以下命令后  c:\mysql\bin\mysqladmin-u root -p shutdown  再net start mysql就没有这个错误提示了!  *************  2  MySQL的1067错误  Q:我的Mysql碰到...
问题解决牌阵 推荐指数 恋爱和婚姻:★★★★★ 工作和学业:★★★★★ 投资和理财:★★★★★ 人 际关 系:★★★★★ 健 康:★★★★★ 其 他:★★★☆☆ 适用范围 有时候我们遇到问题,首先希望知道问题的关键所在,因为一旦知道了其要害,我们就能很容易地找到克服困难的...
标签: 装修 夏季 家具
夏天是不是不适合装修?施工过程中有哪些问题需要注意?已经装修完的新房,如果出现木地板收缩,缝隙加大;墙面开裂等问题,应该如何补救? 业内专家表示,装修受气候影响较大,任何季节施工都会遇到相应的问题,如果墙体、地板、家具出了点小意外,只要对症下药,就能轻松应对。 一号诊室:墙面 症状1: 墙体出汗发霉 夏天潮湿,常会...
1.问题:创建了一个PopupWindow,里面要显示listView,这样子的话,listView的itemClick要得到实现,必须要让PopupWindow得到焦点,可是PopupWindow得到焦点之后,parentView 的一些onTouch事件就得不到响应,在这个时候应该怎么办? 2.解决:PopupWindow得到焦点:window.setFocusable(true); 也要让除了PopupWindow之外的得...

经验教程

703

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部