Сценарий: у меня есть веб-приложение, которое делает различные запросы ajax. Некоторые из них происходят из-за взаимодействия с пользователем (например, щелчок по строке внутри таблицы, который запускает запрос ajax для обновления дополнительных сведений внутри строки). Другие являются «фоновыми задачами» (например, проверка наличия новых доступных загрузок).
Пользователь должен войти в мое приложение для выполнения любых функций; поэтому любой запрос ajax завершится ошибкой, если пользователь выйдет из системы.
Таким образом, запросы ajax могут быть примерно такими:
/click-table-row
/check-downloads
/some-other-functionality
- ...
Я добавил следующее в глобальный файл .js:
$(function() {
$( document ).ajaxError(function() {
swal({
position: 'top-end',
toast: true,
title: 'Network error',
html: 'Please try again. If problem persists please login again.',
type: 'error',
confirmButtonText: 'Close'
});
});
});
Это использует SweetAlert (swal
) для отображения сообщения, если какой-либо из запросов ajax завершается с ошибкой, используя jquery ajaxError.
Если я смоделирую отказ запроса ajax, запустив сценарий выхода из системы на отдельной вкладке браузера, а затем заставлю приложение выполнять запросы ajax, оно будет выполнять код внутри ajaxError
каждый раз, когда делается запрос ajax (что может быть фоновой задачей, пытающейся выполнить run или пользователь пытается взаимодействовать с приложением). Например, если есть 3 запроса, как показано в списке вверху вопроса, он выполнит код swal
3 раза. Я предполагаю, что это технически правильно, потому что 3 запроса ajax действительно не увенчались успехом.
Что я пытаюсь сделать, так это разработать способ реализации: «если первый запрос ajax не удался, снова прекратите выполнение кода внутри ajaxError()
».
Я не знаю, если и как это достижимо? Пожалуйста, может кто-нибудь посоветовать.
jquery 3.2.1, SweetAlert 2