Ajax запускать каждую секунду, получать данные из WebMethod - PullRequest
0 голосов
/ 05 мая 2020

У меня есть простой WebMethod, который выполняет некоторую работу и возвращает статус. В моем примере он возвращает только число для тестирования.

Затем у меня есть код Ajax, который отправляется в мой веб-метод. Если я вызываю WebMethod напрямую, он вернет данные правильно. Но если я вызываю WebMethod изнутри setInterval (), WebMethod не возвращает данные. Если я попытаюсь вернуть переменную изнутри WebMethod, она будет работать правильно.

Как я могу запускать WebMethod каждую секунду, пока WebMethod не вернет желаемый результат?

<script type = "text/javascript">
    var counter = 5;

    var Pull = function (c) {
        var data = JSON.stringify({ count: c });

        $.ajax({
            type: "POST",
            url: "Accepted.aspx/Receipt",
            contentType: "application/json; charset=utf-8",
            data: data,
            dataType: "json",
            success: PullSuccess,
            error: OnError
        });

    }

    function PullSuccess(response) {
        $("#<%= lbl.ClientID %>").text(response.d);
    };

    function OnError(response) {
        $("#<%= lbl.ClientID %>").text("Error occured");
    };

    function countdown() {
        var interval = setInterval(function () {

            counter--;
            if (counter <= 0) {
                clearInterval(interval);
                $("#<%= lbl.ClientID %>").text("Done");
            } else {

                Pull(counter);
            }

        }, 1000);
    }

    countdown();

    //Works fine:
    //Pull(5);

</script>
...