Подтвердить что ты не робот

IE 9 Ошибка Javascript c00c023f

Я наткнулся на эту ошибку только на 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=/';
    }

}
4b9b3361

Ответ 1

Я не предполагаю, что ваш запрос прерывается? Быстрый googling нашел это сообщение в блоге. Казалось бы, прерванный запрос в IE9 даст эту ошибку при попытке прочитать любые свойства объекта XMLHttpRequest.

Из сообщения, их конкретная проблема с этим кодом ошибки может быть дублирована:

  • Создать объект XMLHttpRequest
  • Назначить обработчик события onreadystatechanged
  • Выполнить запрос
  • Отменить запрос до того, как был обработан ответ

Теперь вы увидите, что обработчик readystatechange будет вызван, с свойством readistate, равным '4'. Любая попытка прочитать Свойства объекта XmlHttpRequest не будут выполнены.

Автор смягчает эту проблему, назначая условие прерывания запросу, когда выполняется ручное прерывание, и обнаруживает его и возвращается, прежде чем пытаться прочитать какие-либо другие свойства. Хотя этот подход будет действительно работать, только если вы выполняете отмену самостоятельно.

Аналогичная проблема была зафиксирована на этой странице в разделе "Группы Google" . К концу обсуждения подразумевается, что эта проблема возникает только

если у вас есть стандарты и рендеринг IE9 режимы, установленные как

Надеюсь, что вы укажете в правильном направлении.

Ответ 2

В рамках процедуры readyState == 4 включите попытку и уловить, похожее на:

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

Мы обнаружили, что это самое успешное решение вышеупомянутого.

Ответ 3

Переключите

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

к

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

Как это имеет значение. кажется, что на IE9, если состояние не 4, responseXML и reponseText дают эту ошибку при доступе (я не знаю, почему...)

Ответ 4

Я получал эту ошибку в своей Framework. Он отображается только в IE (go figure). Я просто завернул ответ, как показано ниже:

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

Ответ 5

Это происходит для меня с IE9, когда я преждевременно прочитал свойство "status" (до того, как readyState будет 4/DONE).