每当提交 ajax 调用时,我都会尝试更新通知计数器,我想使用 ajax.complete 来执行此操作 - 但我在 ajax.complete 内部调用 ajax 函数,这显然会导致无限循环。
有什么简单的方法可以识别这个特定的 ajax 调用,以防止它触发自身的 ajax.complete 操作。
我正在考虑下面这样的事情(抱歉,我仍在学习所有这些)。
$(document).ajaxComplete(function (event, request, settings) {
if (event.data.name !== "NoRefresh"){
$.ajax({
url: "/Dashboard/UpdateCounter/",
type: "GET",
dataType: "html",
data: { name: "NoRefresh" }
})
.done(function (partialViewResult) {
$("#updateme").text(partialViewResult);
});
}
});
最佳答案
来自 jQuery 文档:
If
$.ajax()
or$.ajaxSetup()
is called with theglobal
option set tofalse
, the.ajaxComplete()
method will not fire.
因此,将 global: false
添加到内部 ajax
调用中将避免无限循环。
$(document).ajaxComplete(function (event, request, settings) {
$.ajax({
url: "/Dashboard/UpdateCounter/",
type: "GET",
dataType: "html",
data: { name: "NoRefresh" },
global: false
}).done(function (partialViewResult) {
$("#updateme").text(partialViewResult);
});
});
关于javascript - 防止 Ajax.Complete 内部出现循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52634935/