В XMLHttpRequest, где находится переменная флага ошибки? - PullRequest
5 голосов
/ 23 марта 2010

В спецификации XMLHttpRequest указано, что:

Состояние DONE связано с ошибкой флаг, который указывает на некоторый тип ошибка сети или аборт. Может быть либо истина или ложь и имеет начальное значение false.

Также говорит что-то похожее о флаге "send ()" в состоянии "OPENED".

Это сказано в спецификации, но не в IDL, и когда я создаю новый запрос XMLHttpRequest, я не могу найти эти "флаги".

Где эти булевы переменные?

Ответы [ 3 ]

5 голосов
/ 23 марта 2010

Свойство XMLHttpRequest.readyState - это то, что вы ищете.

Из спецификации, которую вы дали, вы увидите, что все эти "логические" флаги на самом деле являются числовыми значениями.

  • UNSENT (числовой 0)
  • ОТКРЫТО (числовой 1)
  • HEADERS_RECEIVED (цифра 2)
  • ЗАГРУЗКА (цифра 3)
  • СОВЕРШЕНО (числовой 4)

Эти значения являются результатом XMLHttpRequest.onreadystatechange обработчика событий. По сути, чтобы получить эти значения, сделайте что-нибудь с этим эффектом.

//In Javascript
var request = new XMLHttpRequest();
if (request) {
  request.onreadystatechange = function() { 
    if (request.readyState == 4) { //Numeric 4 means DONE

        }
   };

request.open("GET", URL + variables, true); //(true means asynchronous call, false otherwise)
request.send(""); //The function that executes sends your request to server using the XMLHttpRequest.
}

Имейте в виду, всегда пишите событие onreadystatechange ДО , вызывая метод XMLHttpRequest.send() (если вы решили выполнять асинхронные вызовы). Кроме того, асинхронные вызовы вызовут XMLHttpRequest.onreadystatechange прослушиватель событий, поэтому всегда важно, чтобы вы реализовали это.

Подробнее о Википедии

4 голосов
/ 28 января 2011

Я слышал, что редактор XHR сказал, что флаг ошибки, указанный в спецификации, является внутренней переменной реализации, к которой потребители не могут получить доступ.

То же самое с флагом "send ()".

3 голосов
/ 24 марта 2010

Я написал в список электронной почты веб-приложений об этих флагах, вот что они ответили :

Все, что могут использовать авторы, выраженово фрагменте веб IDL.Все, что за пределами этого, представляет собой какую-то реализацию данных, которую нужно так или иначе держать для правильной реализации спецификации.

(Это было мое сомнение)

...