Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > ajax

ajax的 IE cache 相关问题解决

来源:中文源码网    浏览:139 次    日期:2024-05-10 18:46:36
【下载文档:  ajax的 IE cache 相关问题解决.txt 】


ajax的 IE cache 相关问题解决
运用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:不推荐

相关内容