- ベストアンサー
PHPとjqueryでブラウザ上で進捗状況をリアルタイムに表示する方法はあるか?
- PHPとjqueryを使用して、ブラウザ上で進捗状況をリアルタイムに表示する方法はありますか?元々のプログラムでは、10回の実行結果がまとめて表示されるだけですが、プログラム処理と同期して進捗状況を一つずつ表示する方法があれば教えてください。
- PHPとjqueryを使って、ブラウザ上で進捗状況をリアルタイムに表示する方法を教えてください。プログラム処理と同期させて、一つずつ表示する方法が知りたいです。
- ブラウザ上でPHPとjqueryを使用して進捗状況をリアルタイムに表示するにはどうすればいいでしょうか?プログラム処理と同期して表示させる方法が知りたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まとめて10個でないようにする、ということでしたらjQueryというより PHP側で解決できます。 ポイントとしては ・バッファを最初にスペースとかで埋めておく ・ob_flushとflushで途中までのものを出力させる これでいけます。 せっかくなので、処理前と処理完了のイベントを画面に表示する部分を書きたして そこをjQuery にしました。 <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> </head> <body> <input id=test /><br /> <script type="text/javascript"> (function() { $('#test').val('処理中'); })() jQuery.event.add(window, "load", function(){ $('#test').val('完了しました'); }); </script> <? $i=0; for($i=0;$i<256;$i++) echo " ";//バッファ埋め for($i=0; $i<10; $i++){ echo "実行中<br />"; ob_flush(); flush(); sleep(5); } ?> </body> </html> サーバ側で何をEchoするのか不明であれば、それをクライアント上のjQueryで表示することはできませんよね。 その場合は上のようにPHP上でflushしながら出力します。 逆に、「実行中」を5秒感覚で10個って最初から決まっているなら、PHPでEchoする代わりに その処理をJavascriptで書けばいいわけです。 そのとき、jQueryは使ってもいいし使わなくてもいいですね。 質問者さんが前者でやりたいのか後者でやりたいのか分からずすみません。