我有点疯狂试图理解为什么这会输出一次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>
答案 0 :(得分:3)
我认为你想使用setInterval
函数setTimeout
仅执行一次。
最好使用setTimeout(function () { ajax_get_json(); }, 10000)
或setTimeout(ajax_get_json, 10000)
,而不是使用被评估为函数回调的字符串。
另请注意,ajax请求可能随时完成,因此使用setInterval
不会每10秒完成一次。您也可以在setTimout
回调中拨打onreadystatechange
来对来电进行链接。