我仅在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=/';
}
}
答案 0 :(得分:19)
我不认为你的请求被中止了?一个快速的谷歌搜索发现this博客文章。在尝试从XMLHttpRequest对象中读取任何属性时,IE9中的中止请求似乎会出现此错误。
从帖子中,他们对此错误代码的特殊问题可以通过以下方式复制:
现在您将看到将调用readystatechange处理程序, 将readystate属性设置为'4'。任何尝试阅读 XmlHttpRequest对象属性将失败。
作者通过在执行手动中止时为请求分配中止状态,并在尝试读取任何其他属性之前检测并返回,来缓解此问题。虽然这种方法只有在你自己进行中止时才能真正起作用。
this WebSync Google Groups post记录了类似的问题。在讨论结束时,有一个暗示只出现这个问题
如果你有标准和IE9渲染 模式都设置
希望指出你正确的方向。
答案 1 :(得分:3)
在readyState == 4例程中,包含类似于:
的try和catchtry {
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之前)。