CDの保有枚数を教えてください

PHPの内部処理をjqueryを使ってブラウザ上で進捗状況をリアルタイムで見せてくれるようなものは作れますか?

jqueryで動的なwebページを作れると聞いての質問なのですが。jqueryは少ししか触っていません

例えば

<?php
$i = 1;
while( $i <= 10 ){
echo "実行中<br>\n";
$i++;
sleep(5);
}
?>

というプログラムがあって、普通に実行したらまとめて10個の"実行中"が表示されるだけですが、これをプログラム処理と同期させてページを更新させること無しに一つづつブラウザに表示させて行くというような処理は可能なのでしょうか?教えてください

A 回答 (1件)

まとめて10個でないようにする、ということでしたらjQueryというより


PHP側で解決できます。

ポイントとしては
・バッファを最初にスペースとかで埋めておく
・ob_flushとflushで途中までのものを出力させる

これでいけます。
せっかくなので、処理前と処理完了のイベントを画面に表示する部分を書きたして
そこをjQuery にしました。


<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4. …
</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は使ってもいいし使わなくてもいいですね。

質問者さんが前者でやりたいのか後者でやりたいのか分からずすみません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報