0

我有点疯狂地试图理解为什么这会根据超时函数输出一次 json 数据,然后不再输出。我究竟做错了什么?

<script type="text/javascript">
var myTimer =0;
function ajax_get_json(){
var results = document.getElementById("results");
var hr = new XMLHttpRequest();
hr.open("POST", "ballJson.php",true);
hr.setRequestHeader("Content-type", "application/json");
hr.onreadystatechange = function() {
    if(hr.readyState == 4 && hr.status == 200) {
        var data = JSON.parse(hr.responseText);
        results.innerHTML = "";
        for(var obj in data){
            results.innerHTML += data[obj]+"<br />";
        }
    }
}
hr.send(null);
results.innerHTML = "requesting...";
myTimer = setTimeout('ajax_get_json()',10000);
}
</script>
4

1 回答 1

3

我认为您想使用该setInterval功能setTimeout只执行一次。

setTimeout(function () { ajax_get_json(); }, 10000)使用或setTimeout(ajax_get_json, 10000)代替使用作为函数回调评估的字符串也是更可取的。

另请注意,ajax 请求可能随时完成,因此使用setInterval. 您还可以调用回调以链接调用setTimoutonreadystatechange

于 2013-03-11T01:21:14.763 回答