【问题标题】:IE 9 Javascript error c00c023fIE 9 Javascript 错误 c00c023f
【发布时间】:2011-11-09 09:41:48
【问题描述】:

我只在 IE9 上遇到过这个错误:

SCRIPT575:由于错误 c00c023f,无法完成操作。

错误发生在这一行:if ((a.responseXML) && (a.readyState==4)) {

我无法弄清楚为什么会发生这种情况,而且它似乎在其他浏览器中运行良好。

这是我的 javascript 代码:

var a = new XMLHttpRequest();
a.open("GET",'/cust/ajax/getresult.php?qk=nnf87&arg1='+pzid,true);
a.onreadystatechange = function () {
    if ((a.responseXML) && (a.readyState==4)) {
        var N = a.responseXML.getElementsByTagName('result')
        sequence = N[0].firstChild.data;
        var SEQ = sequence.split(",");
        var num = SEQ.length;
                    var sum = 0;
                    for(var n=0;n<num;n++){sum = sum + (SEQ[n]*1);}
        //document.getElementById("the_number_of").innerHTML = sum;
        var date = new Date();
        date.setTime(date.getTime()+(2*60*60*1000));
        document.cookie='cpa_num='+sum+'; expires= '+date.toGMTString()+'; path=/';
    }

}

【问题讨论】:

    标签: javascript ajax xmlhttprequest internet-explorer-9


    【解决方案1】:

    我认为您的请求不会被中止?快速谷歌搜索发现this 博客文章。尝试从 XMLHttpRequest 对象中读取任何属性时,IE9 中的中止请求似乎会出现此错误。

    从帖子中可以看出,他们对此错误代码的特殊问题可以通过以下方式复制:

    • 创建一个 XMLHttpRequest 对象
    • 分配一个 onreadystatechanged 事件处理程序
    • 执行请求
    • 在处理响应之前中止请求

    您现在将看到将调用 readystatechange 处理程序, readystate 属性设置为“4”。任何尝试阅读 XmlHttpRequest 对象属性将失败。

    作者通过在执行手动中止时为请求分配中止状态来缓解此问题,并在尝试读取任何其他属性之前检测并返回。虽然这种方法只有在您自己执行中止时才真正有效。

    this WebSync Google Groups post 记录了类似的问题。在讨论结束时,暗示这个问题只会发生

    如果你有标准和 IE9 渲染 模式都设置了

    希望这会为您指明正确的方向。

    【讨论】:

    • 您好@Matt,我尝试了您的解决方案,它有效!太感谢你了,本来想给你投票的,但是我是新来的,我要等到声望15。我要努力!哈哈。再次感谢!
    • @peipei 我很高兴它成功了。欢迎来到 StackOverflow!
    【解决方案2】:

    切换

    if ((a.responseXML) && (a.readyState==4))
    

    if ((a.readyState==4) && (a.responseXML))
    

    因为顺序很重要。似乎在 IE9 上,如果状态不是 4,responseXML 和 reponseText 在被访问时会产生此错误(我不知道为什么......)

    【讨论】:

      【解决方案3】:

      在 readyState==4 例程中,包含类似于以下内容的 try 和 catch:

      try {
          var response=xmlHttp.responseText;
          }
      catch(e) {
          var response="Aborted";
      }
      

      我们发现这是对上述问题最成功的解决方案。

      【讨论】:

      • 这适用于我的情况...非常奇怪的问题,很高兴它可以像这样解决并评估响应。
      【解决方案4】:

      我在我的框架中遇到了这个错误。它只显示在 IE 中(去图)。我只是简单地将响应包装如下:

      if(request.readyState == 4)
      {
        // get response
        var response = request.responseText;
      }
      

      【讨论】:

        【解决方案5】:

        当我过早地读取“状态”属性时(在 readyState 为 4 / DONE 之前),IE9 会发生这种情况。

        【讨论】:

          猜你喜欢
          • 2011-12-15
          • 2013-01-25
          • 2012-08-23
          • 1970-01-01
          • 2013-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多