我使用jQuery在单击按钮时调用一个函数。这个被调用的函数在PHP中,并返回日志信息。我试图使用setInterval()
,但它会根据我选择的速度调用该函数,并倾向于返回重复的日志记录信息,并且大部分时间都会冻结。有没有办法让我可以从jQuery重复调用PHP函数,但只有在最后一次调用完成并返回后才调用函数?什么是jQuery中setInterval的替代方法?
这里是jQuery代码,使涉及setInterval()
setInterval(
function(){
$.getJSON("ajax.php?function=tail&pointer=" + ftell,
function(data){
var obj = [];
obj = $.parseJSON(data);
ftell = obj[0];
$("#tail").append(obj[1]);
});
}, 2000);
这里是它在Ajax调用回调函数调用
function tail(){
$file = "/path/to/the/log/file.log";
$handle = fopen($file, "r");
clearstatcache();
$currentSize = filesize($file);
$offset = $_REQUEST['pointer'] - $currentSize;
if ($_REQUEST['pointer'] == 0) {
fseek($handle, -1024, SEEK_END);
} else {
fseek($handle, $_REQUEST['pointer'], SEEK_END);
}
while ($buffer = fgets($handle)) {
$log .= $buffer . "<br />";
}
fclose($handle);
$results = array('0' => $currentSize, '1' => str_replace('"', '\"', $log));
echo json_encode($results);
}
递归回调。 – zzzzBov 2012-01-06 17:50:15
有些代码可以帮助你。 – j08691 2012-01-06 17:52:04