У меня есть простой 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>