Sto cercando sul web, ma la documentazione è difficile da trovare. Sappiamo tutti che la chiamata AJAX base utilizzando il browser integrato nel XMLHttpRequest
oggetto (assumere un browser moderno qui):Come rilevare il timeout su una chiamata AJAX (XmlHttpRequest) nel browser?
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
Quindi, c'è un modo che posso rilevare che la chiamata AJAX scaduta ispezionando il XMLHttpRequest oggetto nel browser? Dovrei essere avvisato di fare qualcosa come window.setTimeout(function() { xmlHttp.abort() }, 30000);
?
Grazie!
-Mike
Nel 2014, questa risposta da codificare come quella corretta. Al giorno d'oggi, quasi tutti i browser supportano questo (anche IE8 in poi). –
Beh, non proprio, sii avvisato che l'evento ontimeout non viene attivato fino a quando non viene attivato readyState == 4. Questo non solo non è intuitivo, ma rende difficile creare un comportamento condizionale in base al fatto che un caricamento non abbia avuto esito positivo a causa del fatto che esistesse un timeout o meno. Ad esempio, personalizzare un avviso utente sul motivo per cui un caricamento non è riuscito. Nella mia situazione ho scoperto che potevo realizzare solo ciò che volevo con setTimeout. Inoltre, xhr.timeout non sembra funzionare su Safari a partire dal 2016. – Allasso