IE 9 Javascript ошибка c00c023f - PullRequest
       30

IE 9 Javascript ошибка c00c023f

12 голосов
/ 02 сентября 2011

Я сталкивался с этой ошибкой только в 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 ]

19 голосов
/ 02 сентября 2011

Не думаю, что ваш запрос прерывается?Быстрый поиск в Google нашел это сообщение в блоге.Может показаться, что прерванный запрос в IE9 выдаст эту ошибку при попытке прочитать какие-либо свойства объекта XMLHttpRequest.

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

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

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

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

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

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

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

3 голосов
/ 09 ноября 2011

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

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

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

2 голосов
/ 24 октября 2011

Переключите

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

на

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

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

1 голос
/ 04 января 2015

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

1 голос
/ 27 сентября 2012

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

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