Предотвращение петли внутри Ajax.Complete - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь обновить счетчик уведомлений всякий раз, когда передается ajax-вызов, я хотел бы сделать это с ajax.complete - но я вызываю функцию ajax внутри ajax.complete, что, очевидно, вызывает бесконечный цикл.

Какой простой способ идентифицировать этот конкретный вызов 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);
        });
    }
});

1 Ответ

0 голосов
/ 03 октября 2018

Из документов jQuery:

Если вызывается $.ajax() или $.ajaxSetup() с параметром global, установленным на false, метод .ajaxComplete() не будет запускаться.

Таким образом, добавление 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);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...