定期调用Ajax

Calling Ajax periodically

本文关键字:Ajax 调用      更新时间:2023-09-26

我正在从我的视图页面(MVC剃刀)调用一个Java脚本函数,该函数启动AJAX调用。我希望这种情况定期再次发生。由于某种原因,它进入了递归循环

function GetData(url) {
    $.ajax({
        url: url,
        type: "GET",
        contentType: "application/json; charset=utf-8",
        success: onSuccess,
        error: onError,
        complete: function(xhr, status) {
            setTimeout(GetData(url), 5000);
        }
    });
}
function onSuccess(data, status, xhr) {
    for (var key in data) {
        if (data.hasOwnProperty(key)) {
            var id = data[key].id;
            var value = data[key].value;
            document.getElementById(id).innerHTML = value;
        }
    }
}

在html页面上,它在页面加载上调用了该函数

<script type="text/javascript">
    GetData("someurl");
</script>

当我在完全回调中设置超时时,为什么它会递归。

setTimeout(GetData(url), 5000);立即调用GetData函数,并进入无限循环。

相反,您希望传递函数作为第一个参数:

setTimeout(function() {
  GetData(url);
}, 5000);