我已经搜索过这个问题的答案,而我找不到它的原因可能只是因为我完全把我的剧本搞砸了,所以请任何能帮助我的人都非常感激。
我有一个javascript函数,它触发表单提交的onClick并运行对script1.php的ajax调用,然后用setInterval启动一个计时器。 setInterval正在调用另一个javascript函数来从script1.php轮询输出文件,这样我们就可以将新数据添加到屏幕上。这部分工作正常。
但是,我想在script1.php完成处理时停止计时器。我该怎么做呢?我已经尝试在script1.php中输入clearInterval(myTimer)作为它运行的最后一个语句,它似乎出现在浏览器中,但它并没有停止计时器。
<script type="text/javascript">
var myTimer;
var file1 = "script1.php";
var file2 = "script2.php";
function startTimer(myTimer) {
myTimer = window.setInterval(loadData, 2000);
}
function stopTimer() {
clearInterval(myTimer);
}
function startData()
{
ajaxRequest(file1,data);
startTimer(myTimer);
}
function loadData()
{
ajaxRequest(file2)
}
</script>
<form action="index.php" method="post">
<div style="text-align:left;width:300px;">
<textarea style="width:300px;height:200px;"> </textarea><BR>
<button type="button" onclick="startData()">get data</button>
</div>
</form>
<div id="myDiv" style="text-align:left;width:500px;border:solid 1px #ccc;padding:50px;">
please enter data above
</div>
答案 0 :(得分:1)
您将myTimer
作为参数传递给startTimer
。这使myTimer
成为startTimer
的局部变量。因此,它不会更新全局myTimer
。
应该是:
function startTimer() {
myTimer = setInterval(loadData, 2000);
}
function stopTimer() {
clearInterval(myTimer);
}
然后,您只需致电startTimer()
和stopTimer()
。
答案 1 :(得分:1)
是的,你搞砸了。您应该让PHP直接将数据返回到执行AJAX调用的脚本。
在AJAX成功时,PHP脚本输出的任何文本都可用于成功回调。
如果你使用的是JQuery,那就简单了:
$.ajax({
url: 'someurl',
success: function(response) {
// do whatever with response
}
});
答案 2 :(得分:0)
当你开始你的间隔时,将它分配给任何可以访问的PULlically变量说“INTERVAL_ITEM”
当您的回复达到clearInterval(INTERVAL_ITEM);