ajax的 IE cache 相关问题解决

 更新时间:2013年04月02日 17:35:40   作者:  
运用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("<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:不推荐

相关文章

  • 有史以来最简单的AJAX回调库

    有史以来最简单的AJAX回调库

    很多时候我们只要用到一些简单的Ajax功能,提供一些简单的回调而不需要很花哨的东西。然而现有的很多Ajax库都很大,虽然功能很多但是我们很多时候根本就不需要用到他们,我就遇到过那样的经历,所以我想弄一个很简单的Ajax回调函数来搞定。
    2008-10-10
  • ajax提交到java后台之后处理数据的实现

    ajax提交到java后台之后处理数据的实现

    下面小编就为大家带来一篇ajax提交到java后台之后处理数据的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • ajax翻页效果模仿yii框架自己写的

    ajax翻页效果模仿yii框架自己写的

    这篇文章主要介绍了自己写的ajax翻页效果,模仿yii框架,需要的朋友可以参考下
    2014-03-03
  • 菜鸟蔡之Ajax复习第二篇(JQuery中的load()方法实现Ajax功能)

    菜鸟蔡之Ajax复习第二篇(JQuery中的load()方法实现Ajax功能)

    在上一篇博客中写到的是在传统的Javascript中使用XMLHttpRequest对象异步加载数据的,唉,童鞋.......看到那些代码是不是有点头疼啊!呵呵......
    2012-11-11
  • Ajax $.getJSON案例详解

    Ajax $.getJSON案例详解

    ajax中的$.getJSON方法想必大家非常熟悉吧,本文接下来将在为你巩固一下,感兴趣的你可以参考下,希望对你有所帮助
    2013-03-03
  • ajax与websocket的区别以及websocket常用使用方式 介绍

    ajax与websocket的区别以及websocket常用使用方式 介绍

    这篇文章主要介绍了ajax与websocket的区别以及websocket常用使用方式 介绍,需要的朋友可以参考下
    2018-06-06
  • Ajax请求超时与网络异常处理图文详解

    Ajax请求超时与网络异常处理图文详解

    最近在项目中遇到一个问题,当加载数据量特别大的时候会出现加载超时现象,所以这篇文章主要给大家介绍了关于Ajax请求超时与网络异常处理的相关资料,需要的朋友可以参考下
    2021-05-05
  • Ajax请求成功后return无法接收到返回值的问题及解决方案

    Ajax请求成功后return无法接收到返回值的问题及解决方案

    项目中需要频繁的用到ajax请求,所以就想用一个方法将整个请求封装起来,直接调用方法传递参数,然后返回请求结果就可以了,这篇文章主要介绍了ajax请求成功后return无法接收到返回值,需要的朋友可以参考下
    2023-10-10
  • php ajax网站浏览统计功能的简单实现

    php ajax网站浏览统计功能的简单实现

    这个功能应该是很多网站都需要的,这里仅仅实现了一个基于文件的简易版本,数据库的版本请自行参考实现,我这里实现的功能很不完善,比如未过滤是否为同一访客,是否为同一IP等等,这里仅仅是给大家提供一个参考.
    2008-09-09
  • AJAX在不同浏览器中XMLHttpRequest对象的生成示例

    AJAX在不同浏览器中XMLHttpRequest对象的生成示例

    本文为大家介绍下AJAX在不同浏览器中XMLHttpRequest对象是怎样生成的,以方便我们针对不同浏览器进行测试,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-07-07

最新评论