我有这个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>
答案 0 :(得分:1)
根据您的示例代码,getTime()
内发生的第一件事是检查名为str
的变量是否为空,如果是,则从函数返回。 str
未定义(在您的示例代码中),因此它应该返回。尝试删除if
- 语句,或将str
初始化为不会导致语句失败的内容。
此外,您有两个语句将(最终)导致您的代码每秒执行两次:
setTimeout(getTime, 1000);
和
window.setInterval(getTime, 1000);
第一个,setTimeout()
将在1秒后执行一次代码。但是,每次执行getTime()
方法时都会执行此操作 - 因此理论上它应该每秒运行一次。
第二个,setInterval()
将以1秒的间隔执行代码。因此,您的代码将始终每1秒执行一次。
我建议您移除setTimeout()
内的getTime()
行,或将setInterval()
更改为setTimeout()
(以便让球滚动,可以这么说)