Я ищу в Интернете, но документация трудно найти. Мы все знаем, что основной вызов AJAX, используя браузер встроенного в XMLHttpRequest
объекте (предположим, что современный браузер здесь):Как определить время ожидания вызова AJAX (XmlHttpRequest) в браузере?
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
Итак, есть ли способ, что я могу определить, что вызов AJAX истек путем проверки XMLHttpRequest объект в браузере? Мне посоветовали бы сделать что-то вроде window.setTimeout(function() { xmlHttp.abort() }, 30000);
?
Спасибо!
-Mike
В 2014 году этот ответ должен быть помечен как правильный. В настоящее время почти любой браузер поддерживает это (даже IE8 и далее). –
Ну, не совсем - будьте предупреждены о том, что событие ontimeout не запускается до тех пор, пока не будет запущена функция готовности к запуску == 4. Это не только неинтуитивно, но и затрудняет создание условного поведения, основанное на том, что загрузка не удалась из-за того, что был тайм-аут или нет. Например, настройка оповещения пользователя о причине неудачной загрузки. В моей ситуации я обнаружил, что могу сделать только то, что хотел с помощью setTimeout. Кроме того, xhr.timeout, похоже, не работает в Safari с 2016 года. – Allasso