我的html页面触发2个php脚本,一个用于执行任务,另一个用于轮询日志文件并在html页面上显示结果。 'updatestock.php'完成后如何停止getStatus()进程?
<script type="text/javascript">
$(function() {
startProcess();
getStatus();
});
function startProcess() {
$("#done").load('updatestock.php');
}
function getStatus() {
$("#status").load('getstatus.php');
setTimeout("getStatus()",2000);
}
</script>
答案 0 :(得分:3)
你使用clearTimeout:
// persistent variable needed
var timeout = 0;
$(function() {
startProcess();
getStatus();
});
function startProcess() {
// second parameter of load = completion callback
$("#done").load('updatestock.php',function()
{
// clearTimeout will stop the next getStatus from firing.
clearTimeout(timeout);
timeout = -1;
});
}
function getStatus() {
// just in case. You never know what's cached.
// (the ids for setTimeout are positive).
if( timeout < 0 ) return;
$("#status").load('getstatus.php');
// sets the ID of the current timeout.
timeout = setTimeout("getStatus()",2000);
}
答案 1 :(得分:2)
使用load()
方法中的回调来设置标记,然后在getStatus()
方法中检查它:
$(function() {
startProcess();
getStatus();
var flag = false;
});
function startProcess() {
$("#done").load('updatestock.php', function() {
flag = true;
});
}
function getStatus() {
if ( flag ) return false;
$("#status").load('getstatus.php');
setTimeout("getStatus()",2000);
}
答案 2 :(得分:0)
将getStatus
的延迟调用放入load
的回调中,并使用if语句根据getstatus.php返回的内容确定是否调用它。它可以是某个响应代码或数据位,例如JSON响应中的"finished": true
。
答案 3 :(得分:0)
var stopProcess = false;
function startProcess() {
$("#done").load('updatestock.php', function() {
stopProcess = true;
});
}
function getStatus() {
if ( stopProcess){
return false;
}
$("#status").load('getstatus.php');
setTimeout("getStatus()",2000);
}