Счетчик увеличения при каждом успешном вызове ajax

#jquery #ajax

#jquery #ajax

Вопрос:

Я написал вызов ajax, который вызывает rest API, при каждом вызове он извлекает данные из базы данных, если база данных обнаружила, то она должна увеличить счетчик на 1, чтобы вычислить общее количество найденных записей.

 function myFunction() {
    var count = 0
    $.ajax({
        url: "http://localhost:6060/rest/getData",
        type: "get",
        success: function(result) {
            count  ;
            $.each(result, function(key, value) {
                $("#patienthide").css("display", "block");
                $("#patient").append(value.name   "<green>waiting<green>"   "<br>");
                deleteFunction(value.id);
            });
        }
        console.log(count);
    });
}
$(document).ready(function() {
    setInterval(myFunction, 10000);
    $("#patienthide").css("display", "none");
});
  

но он всегда выводит 1 на консоль. но вывод должен увеличивать счетчик на единицу при каждом успешном вызове

Комментарии:

1. Ваша count переменная определяется локально в функции. Поэтому count всегда будет 0 для каждого выполнения функции. Переместить var count=0 объявление функции выше

2. Как указано выше, и перемещение console.log(count) внутри success: (где он сейчас находится в предоставленном коде, приведет к синтаксической ошибке, поэтому предполагаю, что он уже находится внутри success)

Ответ №1:

Ваша count переменная определяется локально в функции. Таким образом, счетчик всегда будет равен 0 для каждого выполнения функции. Переместить var count=0 объявление функции выше

 var count = 0;

function myFunction() {
    $.ajax({
        url: "http://localhost:6060/rest/getData",
        type: "get",
        success: function(result) {
            count  ;
            $.each(result, function(key, value) {
                $("#patienthide").css("display", "block");
                $("#patient").append(value.name   "<green>waiting<green>"   "<br>");
                deleteFunction(value.id);
            });
            console.log(count);
        }
        
    });
}
$(document).ready(function() {
    setInterval(myFunction, 10000);
    $("#patienthide").css("display", "none");
});