javascript - 防止 Ajax.Complete 内部出现循环

标签 javascript jquery ajax

每当提交 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 the global option set to false, 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/

相关文章:

javascript - Typescript - 内部模块中的导入声明不能引用外部模块

javascript - Alt 属性问题

jquery - MVC Api Controller 与 JSON.stringify 的混淆

javascript - Yii2:将变量从 Controller 传递给javascript

javascript - RSA 和 AES 加密

javascript - HTML5音频播放器: How to select by HTML elements instead of div ID's?

javascript - knockout 绑定(bind)元素到 Bootstrap 菜单

jquery - 如何使用 css3 动画沿 flex 路径为球设置动画?

jquery - CSS应用于ajax成功响应

javascript - 如何每 x 秒更改文本值?