我正在从我的 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/