ajax的 IE cache 相关问题解决

乄娱乐家

乄娱乐家

2016-02-19 09:42

下面是个简单易学的ajax的 IE cache 相关问题解决教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!
运用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:不推荐
展开更多 50%)
分享

猜你喜欢

ajax的 IE cache 相关问题解决

Web开发
ajax的 IE cache 相关问题解决

ajax中文乱码问题解决方案

Web开发
ajax中文乱码问题解决方案

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

常见PHP页面漏洞分析及相关问题解决

PHP
常见PHP页面漏洞分析及相关问题解决

《尘埃3》运行问题解决

电脑网络
《尘埃3》运行问题解决

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CFileDialog设置多选的问题解决

编程语言 网络编程
CFileDialog设置多选的问题解决

Java反转字符串和相关字符编码的问题解决

编程语言 网络编程
Java反转字符串和相关字符编码的问题解决

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

win10怎么关闭ie11浏览器

win10怎么关闭ie11浏览器

jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)

jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
下拉加载更多内容 ↓