Когда должен срабатывать обработчик onerror XMLHttpRequest

У меня небольшая проблема с пониманием XMLHttpRequestобработчиков. Спецификация говорит об обработчике onerror:

error[Dispatched ... ] Когда запрос не выполнен.

load[Отправлено ... ] Когда запрос успешно выполнен.

Проблема в том, что значит «запрос не выполнен». Это может быть

  • запрос вообще не может быть отправлен (например, Отказ в подключении и такие ошибки) или
  • вышеуказанное плюс сервер вернул код ошибки (например, 404)

Кроме того, я' хотелось бы знать, означает ли это, что onerrorи onloadникогда не должны срабатывать одновременно.

Эта ссылкауказывает, что обработчик onerrorдолжен выполняться в зависимости от кода statusи onloadв зависимости от readyState. Это указывало бы на то, что они не являются взаимоисключающими, однако я не думаю, что это авторитетная информация.

Я спрашиваю, потому что, используя последний снимок Opera, я обнаружил, что onloadсрабатывает даже при коде состояния 404. Я знаю, что проверка статуса— это верная ставка, но я хотел бы знать, нужно ли это делать в соответствии со спецификацией, или это просто обходной путь для ошибки в Opera.

43
задан jpalecek 14 May 2012 в 13:31
поделиться