IE 9 Javascript错误c00c023f

时间:2011-09-02 18:23:41

标签: javascript ajax xmlhttprequest internet-explorer-9

我仅在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=/';
    }

}

5 个答案:

答案 0 :(得分:19)

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

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

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

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

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

this WebSync Google Groups post记录了类似的问题。在讨论结束时,有一个暗示只出现这个问题

  

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

希望指出你正确的方向。

答案 1 :(得分:3)

在readyState == 4例程中,包含类似于:

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

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

答案 2 :(得分:2)

切换

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

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

因为订单很重要。似乎在IE9上如果状态不是4,那么如果被访问则responseXML和reponseText会产生这个错误(我不知道为什么......)

答案 3 :(得分:1)

我的框架中出现此错误。它只出现在IE中(去图)。我只是把响应包装成如下:

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

答案 4 :(得分:1)

当我读到&#34;状态&#34时,IE9就会发生这种情况。属性过早(在readyState为4 / DONE之前)。