Сценарий: у меня есть веб-приложение, которое выполняет различные запросы 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 завершился неудачей, с помощью ajaxError .
jquery.
Если я имитирую ошибку запроса ajax - запустив сценарий выхода из системы на отдельной вкладке браузера - и затем приложение выполнит запросы ajax, оно будет выполнять код внутри ajaxError
каждый раз, когда делается запрос ajax (который может быть попытка выполнения фоновой задачи или попытка пользователя взаимодействовать с приложением). Например, если есть 3 запроса, как показано в списке в верхней части вопроса, он выполнит код swal
3 раза. Я предполагаю, что это технически правильно, потому что 3 запроса AJAX действительно не удалось.
То, что я пытаюсь сделать, - это разработать способ реализации: «если первый ajax-запрос завершится неудачно, прекратите запуск кода внутри ajaxError()
снова».
Не знаю, достижимо ли это или как? Пожалуйста, может кто-нибудь посоветовать.
jquery 3.2.1, SweetAlert 2