Tengo un pequeño problema para comprender los controladores de XMLHttpRequest
. The specification says this about the onerror
handler:¿Cuándo debe disparar el controlador onerror de XMLHttpRequest?
error
[Se distribuye ...] Cuando la solicitud ha fallado.
load
[Despachado ...] Cuando la solicitud se ha completado correctamente.
El problema es, ¿qué significa que "la solicitud ha fallado". Eso podría ser
- la solicitud no pudo ser emitido en absoluto (por ejemplo. Conexión rechazada y este tipo de errores), o
- lo anterior más el servidor devuelve un código de error (por ejemplo. 404)
Además, me gustaría saber si significa que onerror
y onload
nunca deberían disparar simultáneamente.
This reference indica el manejador onerror
debe ser ejecutado en función del código status
y onload
dependiendo de readyState
. Eso indicaría que no son mutuamente excluyentes, sin embargo, no creo que esta sea una información autorizada.
Pregunto porque utilizando la última instantánea de Opera, encontré onload
disparado incluso en el código de estado 404. Sé que probar status
es una apuesta segura, pero me gustaría saber si es algo que tengo que hacer por especificación o solo una solución para un error en Opera.
Tomo 'ha completado con éxito' para indicar que recibe un código de estado, ya sea 200 OK o un código de error como 404. Chrome también se activa aunque el código de estado sea un código de estado de error. – Snuffleupagus
onerror y onload nunca disparar simultáneamente. Es uno o el otro. Sin embargo, onloadend dispara en ambos casos y es el último evento de la fila. – jayarjo