- ベストアンサー
処理中...と表示するには
データ検索のプログラムがあるのですが、 フォームを送信した後、処理に時間が掛かるものであった場合、ブラウザに「処理中...」と一旦表示させ、その後、検索結果を表示させる。 といった事をやりたいと思っています。どういう方法があるのでしょうか?ぜひ教えて頂けないでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
<div id="wait">処理中</div> と先に表示しておいて、 検索結果と同時にCSSも出力する。 <style type="text/css"> <!-- #wait{display:none;} --> </style>
その他の回答 (5)
- tany180sx
- ベストアンサー率63% (239/379)
#3ですが。 出力制御関数を使えば先に表示してから検索処理をすることができます。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
正攻法はAJAXでXMLHttpRequestと使ってデータ処理するのが良いと思いますが。 > AJAXでは得意な部分ですよね。でも、サーバサイドでやってしまいたいのです。 # 4さんの方法でいけるかもしれませんが、出力に注意しなければならないですね。 出力制御関数で処理途中でも出力がなされるようにする必要があります。 http://php.s3.to/man/ref.outcontrol.html 一つのアイデアとして、フレームが利用出来るなら、3つのページを使う事で処理可能かと思います。 1. ベースのページ 変数を 3の処理ページに受け渡す 2. 処理中と表示 3. 処理のページ。処理が終了したら、リダイレクトで結果を表示。 結果表示のリダイレクト先は親フレームである必要があるでしょうから、やはりwindow等のJavaScriptやRefleshタグは必要かもしれません。
お礼
ありがとうございます。 出力制御関数というものがあるのですね、知りませんでした。。これを私が知らないばかりに話が通じていなかったのですね。皆様申し訳ありません。。
- aqucent
- ベストアンサー率39% (78/200)
#2です。 > echo '処理中...';と同時にリダイレクトさせるJavaScriptでタイマーをセットするのでしょうか? いえ、JavaScriptは不要です。 1. echo '処理中...'; 2. 検索開始 → 検索終了 3. 検索結果をHTML出力 4. <meta http-equiv='Refresh' content='0; url=./result.html' /> を出力 '処理中...' を出力したため、locationヘッダは扱えませんが、meta要素によるリダイレクトなら受け付けるはずです。
お礼
ありがとうございます。 No.5の方にもアドバイスを頂いたように、私の無知で2度もご回答頂きましてスミマセン。本当にありがとうございます!
- aqucent
- ベストアンサー率39% (78/200)
echo '処理中...'; としてから、検索処理を行えば良いのではないでしょうか? 検索結果をそのまま出力すると、"処理中..." が残ってしまいますが、 検索結果をHTML出力して、出力したファイルにリダイレクトさせれば解決できると思います。
補足
このやり方ですと、 echo '処理中...';と同時にリダイレクトさせるJavaScriptでタイマーをセットするのでしょうか?リダイレクトさせるタイミングが難しいのでは?と感じてしまいました。 一度テストしてみたいと思います。ありがとうございます!
- yambejp
- ベストアンサー率51% (3827/7415)
一度処理中という表示をしたあと、ajaxでデータを よみこみ表示するのが妥当かと。
お礼
ありがとうございます。 AJAXでは得意な部分ですよね。でも、サーバサイドでやってしまいたいのです。
お礼
ポストを受けるプログラムで処理中と表示させたあと、ソケットを使用して検索データを作成し出力、その後にディスプレイnoneを追加しました。 OKでした。ソケットは不要だったかも知れませんが。。。 ありがとうございました。
補足
ありがとうございます。 この「先に表示する」ができないのではないでしょうか? ソケットを使用すれば、こちらの案が使えるかも知れないと思いました。とにかくまだテストができていません。。スミマセン。。