2014-03-28 61 views
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的下載。任何方式顯示下載過程中正在進行的輸出?

回答

2

使用str_replace()函數PHP函數

<?php 
$order = array("\r\n", "\n", "\r"); 
$replace = '<br />'; 
?> 
<script type="text/javascript"> 
      $(document).ready(function() { 
       var update = "<?php echo str_replace($order, $replace, $progress); ?>"; 
       $("#status").html(update); 
      }); 
     </script> 
+0

由於第二建議停止錯誤,但預期它不工作。我會更新我的原始帖子。 – JeffVader

+0

如果您想每n秒更新一次您的狀態,請使用帶有jQuery的ajax調用。 – user3473274

+0

謝謝 - 我試圖做到這一點,但我只在下載完成時纔會得到輸出。任何使用AJAX做這件事的例子? – JeffVader