javascript - 有没有办法让 jquery 的 ajaxError 在第一次 ajax 请求失败后停止运行?
问题描述
场景:我有一个 Web 应用程序,它发出各种 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 请求时执行内部代码(这可能是试图运行的后台任务,或试图与应用程序交互的用户)。例如,如果有 3 个请求,如问题顶部的列表所示,它将执行swal
3 次代码。我认为这在技术上是正确的,因为 3 个 ajax 请求确实失败了。
我正在尝试做的是制定一种实现方法:“如果第一个 ajax 请求失败,请停止ajaxError()
再次运行内部代码”。
我不知道这是否或如何实现?请有人建议。
jQuery 3.2.1,SweetAlert 2
解决方案
检查状态码=> 401
$(document).ajaxError(function(e, xhr) {
if(xhr.status===401)
{
swal({
position: 'top-end',
toast: true,
title: 'Network error',
html: 'Please try again. If problem persists please login again.',
type: 'error',
confirmButtonText: 'Close'
});
}
});
推荐阅读
- azure-devops - 新服务端点
- laravel - Vuejs - 如何正确注销用户?
- php - laravel 在尝试登录时返回 false 以获得正确的凭据
- python - 带有多个选项的 while 循环内的键盘输入
- azure - Azure 逻辑应用定价
- microsoft-teams - Microsoft Teams 频道/Amazon Lex 集成
- python - 我想在洗牌前回忆我的 Deck 类来洗牌以恢复牌组,这样我就不会洗牌少于 52 张牌的牌组
- c# -
不适用于 ASP.Net MVC 5 - colors - 如何防止 azure cloud shell 以纯绿色显示目录?
- python - 仅过滤列中的某些行?