Ответ 1
[Я не понимаю, что означает "после неудачи" для вас, но из следующего вы поймете направление действий и то, как вы можете приблизиться к своей проблеме]
Вы можете обернуть вызов ajax в функцию и вызвать его снова, если это ошибка.
var callMeAgain = function(){
$.ajax({
type: "GET",
dataType: "json",
url: "url",
cache: false,
async: false,
success: function (data) {
alert(data);
},
error: function(xhr, textStatus, errorThrown) {
callMeAgain();
//text statuses for error are: "timeout", "error", "abort", and "parsererror"
}
});
};
Это то, чего вы пытаетесь достичь?
У вызова ajax есть параметр тайм-аута, и вы можете сделать что-то вроде этого.
var callMeAgain = function(){
$.ajax({
type: "GET",
dataType: "json",
url: "url",
cache: false,
timeout: 400,
async: false,
success: function (data) {
alert(data);
},
error: function(xhr, textStatus, errorThrown) {
if (textStatus=="timeout") {
callMeAgain();
}
}
});
Как я вижу в подобном ответе, необходимо добавить, что:
Установите тайм-аут (в миллисекундах) для запроса. Это будет отменено любой глобальный таймаут, заданный с $.ajaxSetup(). Период таймаута начинается в точке вызывается вызов $.ajax; если еще несколько запросов прогресс и браузер не имеет доступных соединений, возможно для запроса тайм-аута перед его отправкой. В jQuery 1.4.x и ниже, объект XMLHttpRequest будет находиться в недопустимом состоянии, если время запроса; доступ к любому объекту может исключение. Только в Firefox 3.0+ запросы script и JSONP не могут быть отменяется таймаутом; script будет работать, даже если он поступит после период ожидания.
Предположим, вы пишете исключение в каком-то сообщении, и мы поймаем исключение в функции успеха.
var sessionCallVar = function sessionCall () {
return $.ajax(...);
};
var callMeAgain = function(){
$.ajax({
......
success: function (response) {
if(response.SessionExceptionMessage !== ''){
//then we have a session error
sessionCallVar().then(callMeAgain);
}
},
error: function(xhr, textStatus, errorThrown) {
.........
}
});
Цепочка вызовов ajax на основе promises: Как связать три асинхронных вызова с помощью jQuery promises?
И это какая-то архитектура, которую я обнимаю в asp.net [я действительно не знал о вашем серверном языке]: ASP.NET MVC Ajax Обработка ошибок
Обработка ошибок Ajax и обработка пользовательских исключений в обратном вызове ошибки: jQuery Обработка ошибок Ajax, отображение пользовательских сообщений об исключениях