我一直在寻找答案,而我没有找到它的原因可能就是我完全从getgo中破坏了脚本,所以请任何可以帮助我的人都非常感谢。
我有一个javascript函数,它会触发表单提交的onClick并运行对script1.php的ajax调用,然后使用setInterval启动计时器。 setInterval正在调用另一个javascript函数以从script1.php轮询输出文件,以便我们可以将新数据添加到屏幕上。 这部分工作正常。
但是,我想在script1.php完成处理后停止计时器。 我该怎么做呢? 我尝试在script1.php中将clearInterval(myTimer)放入它运行的最后一条语句,它似乎正在浏览器中显示,但并未停止计时器。
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)
}
get data
please enter data above
是的,你搞砸了。 您只需要让PHP将数据直接返回到执行AJAX调用的脚本即可。
在AJAX成功时,PHP脚本输出的任何文本都可用于成功回调。
如果您使用的是JQuery,它将非常简单:
$.ajax({
url: 'someurl',
success: function(response) {
// do whatever with response
}
});
由于某种原因,在我转向使用setInterval之前,这种方法无法正常工作,但是我再次尝试了一下,而ajax现在可以正常工作了。 谢谢!
@ZekarKovacs没问题。 很高兴我能帮上忙。 如果这回答了您的问题,则可能需要单击它旁边的复选标记来接受答案。
您正在将myTimer作为参数传递给startTimer。 这使myTimer成为startTimer的局部变量。 因此,它不会更新全局myTimer。
它应该是:
function startTimer() {
myTimer = setInterval(loadData, 2000);
}
function stopTimer() {
clearInterval(myTimer);
}
然后,您只需要调用startTimer()和stopTimer()。
当您开始间隔时,将其分配给任何可访问的变量,请说" INTERVAL_ITEM"
当您的回复达到clearInterval(INTERVAL_ITEM)时;