【问题标题】:AJAX problem in IE9?IE9 中的 AJAX 问题?
【发布时间】:2011-05-14 23:57:31
【问题描述】:

我做了一个 AJAX 聊天室;它适用于 chrome 和 FF,但当然不适用于 IE。这是我的代码:

<script language="javascript" type="text/javascript">
<!-- 
//Browser Support Code
function ajaxFunction(){
    var ajaxRequest; 
    try {
      ajaxRequest = new XMLHttpRequest();
    } catch (e) {
      try {
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
           ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e){
           alert("Your browser broke!");
           return false;
     }
  }
    }

    ajaxRequest.onreadystatechange = function(){
      if(ajaxRequest.readyState == 4) {
        var ajaxDisplay = document.getElementById('ajaxDiv');
        ajaxDisplay.innerHTML = ajaxRequest.responseText;
      }
    }

    ajaxRequest.open("GET", "pull.php", true);
    ajaxRequest.send(null);  
}

setInterval( "ajaxFunction()", 1000 );

//-->
</script>

结果从不显示。如果对任何人有帮助,我有一个名为 AjaxDiv 的 div。我究竟做错了什么?这是一个错误吗?

【问题讨论】:

  • 或者您可以使用 jquery/mootools,这会将所有内容减少到大约 2 行。这些天滚动你自己的 ajax 处理程序太痛苦了。
  • 我考虑过这个选项,但我更担心微软是否会在如此广泛使用的产品中出现错误
  • @Ken 你能提供一个完整的工作示例吗?我复制了您的代码,它在 IE9 (Windows7 x86) 中运行良好:phihag.de/2011/so/ie9-ajax.html。并且 IE8 有相当多的 bug,你也可能不小心将 bug 的 IE8 代码发送到 IE9。
  • 发一个例子到jsfiddle.netjsfiddle是你的朋友

标签: javascript html ajax


【解决方案1】:

可能会在您每次发出请求时拉出一个缓存副本。

在服务器上设置正确的缓存头

header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Pragma: no-cache' ); 

或将查询字符串附加到 get 请求,如下所示

ajaxRequest.open("GET", "pull.php?ts=" + new Date().getTime(), true);

【讨论】:

  • 谢谢。将标题添加到我的脚本中很有效。不过仍然是 IE9 的一个令人讨厌的功能!
  • @epascarello 我是否需要将这些标头添加到我发送 ajax 请求的所有 php 脚本的顶部?基本上只是将您放在那里的内容复制并粘贴到我的 ajax 脚本顶部? firebug 声称我的 Cache-Control 是 no-store、no-cache、must-revalidate、post-check=0、pre-check=0,而我的 pragma 是 no-cache。但是我在要发布到的脚本顶部没有这些标头,并且我在 phpinfo.php 中没有看到任何内容表明我的服务器正在将这些标头与所有内容一起发送。我正在使用 jquery 执行 ajax,但我间歇性地收到此错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 2011-09-13
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
相关资源
最近更新 更多