AJAX没有循环

时间:2012-10-05 02:47:54

标签: php javascript html ajax

我有这个html和ajax文件,但它没有像我想要的那样每秒更新。我希望每次调用getTime()。它只做一次,然后什么也没做。

有什么想法?谢谢。

<head>
    <title>Auction</title>
    <script type="text/javascript">
        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","functions.php?action=getCurrentTime&id=13",true);
            xmlhttp.send();

            setTimeout(getTime, 1000);
        }

        window.setInterval(getTime, 1000);
    </script>
</head>
<body>
    <?php beginGetAllInfo(); ?>
</body>

1 个答案:

答案 0 :(得分:1)

根据您的示例代码,getTime()内发生的第一件事是检查名为str的变量是否为空,如果是,则从函数返回。 str未定义(在您的示例代码中),因此它应该返回。尝试删除if - 语句,或将str初始化为不会导致语句失败的内容。

此外,您有两个语句将(最终)导致您的代码每秒执行两次: setTimeout(getTime, 1000);window.setInterval(getTime, 1000);

第一个,setTimeout()将在1秒后执行一次代码。但是,每次执行getTime()方法时都会执行此操作 - 因此理论上它应该每秒运行一次。 第二个,setInterval()将以1秒的间隔执行代码。因此,您的代码将始终每1秒执行一次。

我建议您移除setTimeout()内的getTime()行,或将setInterval()更改为setTimeout()(以便让球滚动,可以这么说)