Ajax无限循环

时间:2012-10-05 02:09:08

标签: javascript html ajax

我有一些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);
        }

谢谢!

5 个答案:

答案 0 :(得分:1)

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

  

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

在您的示例中,那将是

setInterval(getTime, 1000);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

setInterval(getTime, 1000); // Run getTime() every second
setInterval(getTime, 200);  // Run getTime() every 200 milliseconds

答案 3 :(得分:0)

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

使用window.setInterval来做这件事。

window.setInterval(getTime, 1000);

答案 4 :(得分:0)

function getTime(){
     setTimeout(getTime, [interval]);
}

这应该这样做。