javascript - 定期调用 Ajax

标签 javascript ajax

我正在从我的 View 页面 (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>

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

最佳答案

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

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

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

关于javascript - 定期调用 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706940/

相关文章:

javascript - 使用 multer 传递 memoryStorage 以用 ajax 表达,但 req.file 未定义

javascript - 使用 Ajax 传递图像

javascript - css position 伪元素堆叠

javascript - 如何使用 HTML5 canvas 绘制 donut

javascript - 如何使用jquery使文本加粗

javascript - 序数比例类别 10 将所有内容映射到相同颜色

javascript - jQuery 相当于 XMLHttpRequest 的上传?

javascript - Ajax 在 Firefox 中不起作用

javascript - 如何一般性地将依赖下拉菜单与 knockout Hook

jquery - 允许出现在任何地方的 HTML5 元素