0

なぜこれがjsonデータを1回出力し、タイムアウト関数に従って再度出力しないのかを理解しようとして、私は少し夢中になっています。私は何を間違っていますか?

<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)orを使用することをお勧めします。setTimeout(ajax_get_json, 10000)

また、ajax リクエストはいつでも完了する可能性があるため、setInterval. setTimoutコールバックを呼び出して、onreadystatechange呼び出しを連鎖させることもできます。

于 2013-03-11T01:21:14.763 に答える