开发者

IE 9 Javascript error c00c023f

I came across this error only on IE9:

SCRIPT575: Could not complete the operation due to error c00c023f.

The error happened on this line: if ((a.responseXML) && (a.readyState==4)) {

I cant figure it out why this happened, and it seems to work very well in other browsers.

and this is my javascript code:

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));
        do开发者_C百科cument.cookie='cpa_num='+sum+'; expires= '+date.toGMTString()+'; path=/';
    }

}


I don't suppose your request is being aborted? A quick Googling found this blog post. It would seem that an aborted request in IE9 will give this error when trying to read any properties off of the XMLHttpRequest object.

From the post, their particular problem with this error code could be duplicated by:

  • Create a XMLHttpRequest object
  • Assign an onreadystatechanged event handler
  • Execute a request
  • Abort the request before the response has been handled

You will now see that the readystatechange handler will be called, with the readystate property set to '4'. Any attempt to read the XmlHttpRequest object properties will fail.

The author mitigates this problem by assigning an abort state to the request when the manual-abort is performed, and detecting it and returning before trying to read any other properties. Though this approach would only really work if you are performing the abort yourself.

A similar problem was documented on the this WebSync Google Groups post. Towards the end of the discussion there is an implication that this problem only occurs

if you've got the standards and IE9 rendering modes both set

Hope that points you in the right direction.


Within the readyState==4 routine, include a try and catch similar to:

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

We found that this to be the most successful resolution to the above.


Switch the

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

to

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

As the order matters. it seems that on IE9 if the state is not 4, the responseXML and reponseText yield this error if being accessed (I have no clue why...)


I was getting this error in my Framework. It only shows up in IE (go figure). I simply wrapped the response like below:

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


It happens for me with IE9 when I read the "status" property prematurely (before readyState is 4 / DONE).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜