khipster
@khipster

Как обрабатывать ошибку AJAX запроса в готовом проекте?

У меня логика такая: не выводить же сразу сообщение об ошибке пользователю (вообще бесят все эти сообщения), нужно просто ещё пару раз попытаться послать запрос, а если не сработает, то уже ничего не поделаешь. timeout использовать не хочу, т.к. а вдруг у пользователя медленное соединение? И что в итоге? Я сам оборву запрос через N секунд, когда всё на самом деле было ладненько.

var request = new XMLHttpRequest();
console.log("пробуем отправить запрос 1 раз");
request.open("GET", "index.php", true);
var i = 2;
request.onreadystatechange = function() {
	if (request.readyState == 4 ) { // Если запрос завершен.
		if (request.status == 200) { // Если код ответа ОК.
			// Бинго!
		}
		else if (i != 4) {
			setTimeout(function() {
				console.log("пробуем отправить запрос " + i + " раз через 1 сек");
				request.open("GET", "index.php", true);
				request.send();
				i++;
			}, 1000);
		}
    else {
    	console.log("Ошибка!");
    }
	}
}
request.send();

https://jsfiddle.net/pau84w4p/5/
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ответы на вопрос 1
abyrkov
@abyrkov
JavaScripter
Логика? Вы запускаете цикл. В итоге - 3 почти одновременных запросов.
+ прикрепляете онриди непонятно зачем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы