サーバーにデータを送信するためにajax呼び出しを使用します。サーバー側のプログラミングはPerlを使用してデータをデータベースに保存します。AjaxとPerlでWebプログレスバーを作成するにはどうすればよいですか?
サイズが大きいファイルがあるため、サーバーに送信されたデータの割合をユーザーに知らせるプログレスバーを表示します。これはAjaxとPerlを使ってどのように実現できますか?
ありがとうございました。ハイレベルでは
サーバーにデータを送信するためにajax呼び出しを使用します。サーバー側のプログラミングはPerlを使用してデータをデータベースに保存します。AjaxとPerlでWebプログレスバーを作成するにはどうすればよいですか?
サイズが大きいファイルがあるため、サーバーに送信されたデータの割合をユーザーに知らせるプログレスバーを表示します。これはAjaxとPerlを使ってどのように実現できますか?
ありがとうございました。ハイレベルでは
、私はゼロの幅をページ上で色の背景(または多分画像)と、空display: block
素子を入れて、これを行う可能性が高いだろうし、進捗状況を取得するためにサーバに定期的にAJAXコールバックを実行しますそれに応じてエレメントの幅を更新します。 (私は私が読んだ説明はAJAXのそのサーバプッシュバージョンことを示唆しているようCOMETは、この種のものを処理するため、より効率的な方法だろうと思われるので、ポーリングのオーバーヘッドを排除するだろうが、私は本当に持っていません私はそれを誤解することができるので、COMETに見えた。)
低レベルでは、これを実装する実際のコードは、あなたのAJAXをやっているかに大きく依存します。あなたはJQuery、CGI::Ajax、別のモジュール(CPANまたはその他)、またはあなた自身の手巻きAJAX処理コードを使用していますか?
そこがそのを達成するために、事前に書いたスクリプトのカップルです:
使用彗星:ページにプログレスバーの要素を更新する定期的なJavaScriptタグをプッシュします。また、ブラウザがページを更新するために余分な空白を送る必要があります(PerlでPHPのflush()に相当するものを見つける)。例えば
、アップロードされたデータのすべての10%、
progressBar(percentage)
は、プログレスバーの幅(私はあなたがページ上のjQueryを持っていると仮定している)を更新する機能です
<script type="text/javascript">progressBar(10)</script>
<script type="text/javascript">progressBar(20)</script>
...
<script type="text/javascript">progressBar(100)</script>
押す:
function progressBar(percentage) {
$('#progressbardiv').css('width', percentage + 'px');
}
をバッファリングされた出力を強制的に送信するには、改行(\ n)を出力してください。ラインバッファリングをオフにするには、いくつかのオプションがあります:http://www.rocketaware.com/perl/perlfaq5/How_do_I_flush_unbuffer_a_fileha.htm –