Проблема со значениями XMLHttpRequest.DONE? - PullRequest
7 голосов
/ 01 августа 2011

У меня есть фрагмент Javascript, который мне нужно отладить:

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (this.readyState === XMLHttpRequest.DONE) {
        if (this.status === 200) {
            success = true;
        }
    }
};

Проходя по Chrome и Firefox, я обнаружил, что первое «если» не работает.Я вижу, что «this.readyState» установлено в «1», что, судя по спецификации W3C, должно означать «OPENED».При наведении курсора на сегмент «.DONE» в Firebug он отображается как неопределенный, а не как «4».

http://www.w3.org/TR/XMLHttpRequest/#states

Есть ли проблема в Firefox и Chrome, из-за которой эти значения не поддерживаются?

Заранее спасибо!

Ответы [ 3 ]

8 голосов
/ 01 августа 2011

Вы должны проверять readyState по одному из числовых значений, 4 в вашем случае.

6 голосов
/ 11 сентября 2012

Некоторый браузер не знает свойства XMLHttpRequest.Done, поэтому перед первым «если» следует проверить его следующим образом.

var DONE =  (typeof XMLHttpRequest.Done !== 'undefined') ? XMLHttpRequest.Done : 4;
0 голосов
/ 16 апреля 2019

Вы можете использовать значение DONE, которое уже есть в переменной httpRequest:

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
    if (this.readyState === this.DONE) {
        if (this.status === 200) {
            success = true;
        }
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...