0
我試圖用rsync命令正在進行的輸出來更新DIV。這個想法我可以看到下載是如何進行的。jquery更新帶rsync進度的DIV
這是我已經得到了代碼,但我得到有關錯誤「未捕獲的SyntaxError:意外的標記非法」
<?php
$down = popen('rsyncd -Pav http://ipv4.download.thinkbroadband.com/1GB.zip 1GB.zip', 'r');
while($progress = fgets($down, 124)) {
ob_flush();flush();
?>
<script type="text/javascript">
$(document).ready(function() {
var update = "<?php echo $progress; ?>";
$("#status").html(update);
});
</script>
<?php
ob_flush();
ob_flush();flush();
}
pclose($down);
}
?>
<div id="status"></div>
在控制檯中我可以看到,它涉及到:
var update = " 33390592 46% 4.62MB/s 0:00:08
34701312 48% 4.63MB/s 0:00:07
35979264 50% 4.63MB/s 0:00:07
";
如何獲取每行更新並在DIV中顯示而不會出錯?
感謝
UPDATE
我現在用這個。 $ update的php echo顯示網頁中的實時輸出,但是DIV在頁面完成之前不會更新,然後我只能得到最後一行輸出。
爲什麼PHP的回聲工作,但現在的div的jquery更新按預期工作?
<?php
$down = popen('rsyncd -Pav http://ipv4.download.thinkbroadband.com/1GB.zip 1GB.zip', 'r');
$order = array("\r\n", "\n", "\r");
while($progress = fgets($down, 32)) {
ob_flush();flush();
$update = str_replace($order,'<br />', $progress);
echo $update; // <-- this outputs fine.
?>
<script type="text/javascript">
$(document).ready(function() {
var update = "<?php echo $update; ?>";
$("#status").html(update);
});
</script>
<?php
ob_flush();flush();
}
pclose($down);
}
?>
這是由於沒有運行,直到頁面的jQuery是滿載,所以在div只用$最後一個條目更新更新?
如果有,有沒有辦法讓jquery在頁面加載時運行,以便更新DIV?
謝謝:)
感謝
UPDATE
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: false });
$("#test").click(function() { $("#log").load("go.php"); });
});
</script>
剛試過以上,它的工作原理,並呼籲go.php和我得到的輸出,但只有當go.php有完成了rsync的下載。任何方式顯示下載過程中正在進行的輸出?
由於第二建議停止錯誤,但預期它不工作。我會更新我的原始帖子。 – JeffVader
如果您想每n秒更新一次您的狀態,請使用帶有jQuery的ajax調用。 – user3473274
謝謝 - 我試圖做到這一點,但我只在下載完成時纔會得到輸出。任何使用AJAX做這件事的例子? – JeffVader