0

我有一些 AJAX 代码,我想每 1 秒继续运行一次。我将此添加到我的 HTML 页面中,以查看它是否会自行更新,但我必须刷新才能看到更改。

        while (1) {
            getTime();
        }

这无法继续更新,它从未更新我的文本。让 Ajax 一遍又一遍地做某事的方法是什么?

这是getTime():

        function getTime() {
            if (str=="") {
                document.getElementById("txtHint").innerHTML="";
                return;
            } 

            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            } else {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }

            xmlhttp.open("GET","auction.php?getTime=1",true);
            xmlhttp.send();

            setTimeout(getTime, 1000);
        }

谢谢!

4

5 回答 5

1

重复性任务通常在 javascript 中使用setInterval

window.setInterval 重复调用函数或执行代码片段,每次调用该函数之间有固定的时间延迟。

在你的例子中,那将是

setInterval(getTime, 1000);
于 2012-10-05T02:10:12.510 回答
0

setInterval()可能是您最好的选择 - 或者,setTimeout在 AJAX 成功时反复重置自己。

于 2012-10-05T02:10:28.660 回答
0
setInterval(getTime, 1000); // Run getTime() every second
setInterval(getTime, 200);  // Run getTime() every 200 milliseconds
于 2012-10-05T02:11:12.467 回答
0

您的代码是一个无限循环,并且将进入浏览器可以很快处理的来自 js 的打开连接的限制数量。

用来window.setInterval做这样的事情。

window.setInterval(getTime, 1000);
于 2012-10-05T02:11:17.410 回答
0
function getTime(){
     setTimeout(getTime, [interval]);
}

这应该这样做。

于 2012-10-05T02:12:53.180 回答