ajax的IE cache issue
来源:互联网 发布:淘宝货源数据包 编辑:程序博客网 时间:2024/06/11 05:26
运用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("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 issue
- VML cache issue
- "dst cache overflow" issue.
- ajax的cache
- C#读取IE的Cache
- Ajax Tips - Avoid the cache effect in IE
- Regarding cache not alive issue
- jquery ajax cache的问题
- C#读取IE的Cache(转)
- IE cache缓存 所带来的问题
- Windows下清空IE cache的小脚本
- IE cache缓存 所带来的问题
- 获得IE Cache 的摘要说明。
- 【IE Cache】IE浏览器造成的请求Cache问题 的解决方案
- Ajax的三种传值方式[ie]
- 【AJAX】IE缓存的噩梦
- 关于Ajax的cache参数的测试
- 关于Ajax的cache参数的测试
- AsyncTask(异步任务)的用法
- error C2065: 'AfxCriticalTerm' : undeclared identifier 解决办法
- 虚函数
- 在二元树中找出和为某一值的所有路径(树)
- 深入探讨 Android 传感器随处监控您的环境
- ajax的IE cache issue
- POI操作Excel----------(转人家的)
- object-c 关键字 instancetype
- uC/OS-II 学习笔记之:怎样在uC/OS-II里创建一个任务?
- java设计模式之状态模式
- Jquery mobile div常用属性
- UDP TCP NAT转换翻译
- centos openstack essex安装
- 关于ios程序的后台运行