我使用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