定期调用Ajax

时间:2016-04-19 01:27:30

标签: javascript ajax

我从我的视图页面(MVC razor)调用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>

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

1 个答案:

答案 0 :(得分:2)

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

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

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