Estoy buscando en la web, pero la documentación es difícil de encontrar. Todos sabemos que la llamada AJAX básica usando el navegador integrado en XMLHttpRequest
objeto (asumir un navegador moderno aquí):¿Cómo detectar el tiempo de espera en una llamada AJAX (XmlHttpRequest) en el navegador?
var xmlHttp = new XMLHttpRequest(); // Assumes native object
xmlHttp.open("GET", "http://www.example.com", false);
xmlHttp.send("");
var statusCode = xmlHttp.status;
// Process it, and I'd love to know if the request timed out
Por lo tanto, hay una manera que puedo detectar que la llamada AJAX Tiempo de espera agotado mediante la inspección del XMLHttpRequest objeto en el navegador? ¿Se me aconsejaría hacer algo como window.setTimeout(function() { xmlHttp.abort() }, 30000);
?
Gracias!
-Mike
En 2014, esta respuesta debe etiquetarse como la correcta. Hoy en día, casi cualquier navegador admite esto (incluso IE8 en adelante). –
Bueno, no del todo: tenga en cuenta que el evento ontimeout no se activará hasta DESPUÉS de que readyState == 4 se active. Esto no solo no es intuitivo, sino que dificulta la creación de un comportamiento condicional en función de si una carga no tuvo éxito debido al hecho de que hubo un tiempo de espera o no. Por ejemplo, personalizando una alerta de usuario sobre el motivo por el que falló una carga. En mi situación, descubrí que solo podía lograr lo que quería con setTimeout. Además, xhr.timeout no parece funcionar en Safari a partir de 2016. – Allasso