• ベストアンサー

処理中...と表示するには

データ検索のプログラムがあるのですが、 フォームを送信した後、処理に時間が掛かるものであった場合、ブラウザに「処理中...」と一旦表示させ、その後、検索結果を表示させる。 といった事をやりたいと思っています。どういう方法があるのでしょうか?ぜひ教えて頂けないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3

<div id="wait">処理中</div> と先に表示しておいて、 検索結果と同時にCSSも出力する。 <style type="text/css"> <!-- #wait{display:none;} --> </style>

fabu
質問者

お礼

ポストを受けるプログラムで処理中と表示させたあと、ソケットを使用して検索データを作成し出力、その後にディスプレイnoneを追加しました。 OKでした。ソケットは不要だったかも知れませんが。。。 ありがとうございました。

fabu
質問者

補足

ありがとうございます。 この「先に表示する」ができないのではないでしょうか? ソケットを使用すれば、こちらの案が使えるかも知れないと思いました。とにかくまだテストができていません。。スミマセン。。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.6

#3ですが。 出力制御関数を使えば先に表示してから検索処理をすることができます。

参考URL:
http://jp.php.net/manual/ja/ref.outcontrol.php
全文を見る
すると、全ての回答が全文表示されます。
回答No.5

正攻法はAJAXでXMLHttpRequestと使ってデータ処理するのが良いと思いますが。 > AJAXでは得意な部分ですよね。でも、サーバサイドでやってしまいたいのです。 # 4さんの方法でいけるかもしれませんが、出力に注意しなければならないですね。 出力制御関数で処理途中でも出力がなされるようにする必要があります。 http://php.s3.to/man/ref.outcontrol.html 一つのアイデアとして、フレームが利用出来るなら、3つのページを使う事で処理可能かと思います。 1. ベースのページ 変数を 3の処理ページに受け渡す 2. 処理中と表示 3. 処理のページ。処理が終了したら、リダイレクトで結果を表示。 結果表示のリダイレクト先は親フレームである必要があるでしょうから、やはりwindow等のJavaScriptやRefleshタグは必要かもしれません。

fabu
質問者

お礼

ありがとうございます。 出力制御関数というものがあるのですね、知りませんでした。。これを私が知らないばかりに話が通じていなかったのですね。皆様申し訳ありません。。

全文を見る
すると、全ての回答が全文表示されます。
  • aqucent
  • ベストアンサー率39% (78/200)
回答No.4

#2です。 > echo '処理中...';と同時にリダイレクトさせるJavaScriptでタイマーをセットするのでしょうか? いえ、JavaScriptは不要です。 1. echo '処理中...'; 2. 検索開始 → 検索終了 3. 検索結果をHTML出力 4. <meta http-equiv='Refresh' content='0; url=./result.html' /> を出力 '処理中...' を出力したため、locationヘッダは扱えませんが、meta要素によるリダイレクトなら受け付けるはずです。

fabu
質問者

お礼

ありがとうございます。 No.5の方にもアドバイスを頂いたように、私の無知で2度もご回答頂きましてスミマセン。本当にありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • aqucent
  • ベストアンサー率39% (78/200)
回答No.2

echo '処理中...'; としてから、検索処理を行えば良いのではないでしょうか? 検索結果をそのまま出力すると、"処理中..." が残ってしまいますが、 検索結果をHTML出力して、出力したファイルにリダイレクトさせれば解決できると思います。

fabu
質問者

補足

このやり方ですと、 echo '処理中...';と同時にリダイレクトさせるJavaScriptでタイマーをセットするのでしょうか?リダイレクトさせるタイミングが難しいのでは?と感じてしまいました。 一度テストしてみたいと思います。ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

一度処理中という表示をしたあと、ajaxでデータを よみこみ表示するのが妥当かと。

fabu
質問者

お礼

ありがとうございます。 AJAXでは得意な部分ですよね。でも、サーバサイドでやってしまいたいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 他アプリの処理を待つには

    VisualBasic2008expressを使っています。 VBで作ったプログラムからインターネットエクスプローラーの検索ボックスのハンドルを取得し、文字列を送信、実行して検索結果を表示した後、また新しい文字列の送信と検索実行を繰り返すプログラムを作ろうとしています。検索を繰り返させるまではできました。 しかし、文字列の送信と検索を実行した後にsleep()を入れているのですが、これだと検索の更新処理の途中で新しい検索をしてしまうので検索結果の表示まで処理されない場合が出てしまいます。 他アプリケーションの更新処理が終わるまで待ち、結果が表示されたらまた新しく文字列の送信と検索実行を繰り返すということができるでしょうか。

  • 検索処理待ちの間に画像を表示したい

    ajaxで検索処理を実装しました。 ただ、検索処理待ちの時間が2,3秒かかります。 ajaxでなければブラウザが読み込み中になるので何をしてるかわかるのでいいのですが、 ajaxの場合、利用者にとってはブラウザ上で何も変化なしって状態になります。 この待ちの時間に「検索中・・・」のような画像などを表示する方法を教えてください。

    • ベストアンサー
    • AJAX
  • サーバー処理のあるwebページがあったとしてサーバー処理のあとクライア

    サーバー処理のあるwebページがあったとしてサーバー処理のあとクライアントにブラウザ画面が表示されたとします。 ※たとえば、検索画面ー>検索結果一覧みたいなながれで このとき検索結果一覧画面で更新(F5)をすると、サーバー処理をもう一度やった後ブラウザ画面が表示されますよね? Ajaxのような通信をおこなって結果をブラウザに表示している場合、更新してしまうとAjaxを行う前のブラウザ画面になってしまうと 思うのですが、Ajaxを無数に行った後の画面を更新してもAjaxを行った結果が表示されるようにするには、どのようにするのでしょうか? 無数なのでクッキーやIEのUserDataなどは使えません。また、ライブラリやフレームワークでそういう機能が用意されているのが あればぜひ教えてください。

    • ベストアンサー
    • AJAX
  • 処理中ウィンドウ表示 [ASP.NET/VB.NET]

    VB.NETでWEB画面を作成しています。 照会画面でデータベースから読み込んだデータを表示させるものですが検索条件によってはどうしても処理時間が長くなる場合があります。そこで検索処理前に『処理中です』みないなウィンドウを検索画面とは別に(検索画面より手前に)表示して、検索処理が終了しデータが表示された後に、処理中画面を閉じる仕様を提示されました。 処理前に新規にウィンドウを表示することはできますが、検索処理と同期をとって閉じる方法が全くわかりません。何か良い方法がありましたらお願いします。またWEBではこの様な場合、どのような仕様が一般的なのでしょうか。

  • 複数のフォームの表示順を変えたいです

     いつもお世話になります。  昨日教えていただいたテーブル内の消費者データを姓をフォームから入力して 検索する処理の中でわからないことがあるので、また教えて下さい。  処理の流れとしては下記のようにしています。 (1)メインメニュー(フォーム) (2)検索メニュー(フォーム) (3)検索条件入力(フォーム) (4)検索実行(クエリ) (5)検索結果表示(フォーム) (3)のフォーム内の「検索」ボタンの埋め込みマクロで(4)と(5)を呼び出したあとに (3)と(4)を閉じるように指定しています。  (1)~(3)は順番に新しいフォームが一番前に表示されるのですが、(5)のフォームが後ろに  隠れていてクリックして前に出さないと見られません。  できれば(3)のフォームで「検索」ボタンをクリックすれば検索結果が一番前に表示される  ようにしたいのですが、できるでしょうか?  宜しくお願いします。

  • 表示中のブラウザ情報を他のブラウザで処理する。

    表示されているブラウザの情報を、もう一つブラウザを開き処理を行いたい。 (表示中のブラウザのHTMLを、もう一つのブラウザで使用したい) よい方法はありますか。 表示中のブラウザA 処理をしたいブラウザBとします。 ・ブラウザAでは処理を追加することはできず、拡張(アドイン)も使用できない仕様です。ただ表示のみ可能です。(Webサーバには手を加えられません) ・ブラウザBにてブラウザAのHTMLを加工して表示する。 ブラウザBはWebサーバにアクセスさせたくない。 ・クッキーを使うことは避けたい。 ・Tempファイルを作成し操作することは可能。 ・1台のPC上の処理です。 ・Administratorです。 自分でも考え検索もしてみたのですが、専門分野で無いので上手く検索結果も得られません。 お願いします。

    • ベストアンサー
    • HTML
  • データ処理実行中に処理件数を表示させたい

    こんばんは、ACCESS初心者です。 ACCESSのVBAで、あるデータ処理を行うプログラムを作成しました。 処理件数が多いため、現在処理中の件数をフォーム上に表示させてあげようと、 テキストボックスを配置し、そこへカウンタの値をセットしようと思います。 (カウントアップしているサマをユーザーに見せたい) しかし、ただセットするだけではダメのようで、 再表示的なこと?をしてあげないと表示されない感じなのですが、 処理中にテキストボックスの最新の値を常に表示させるには 何か方法があるのでしょうか? よろしくお願いします。

  • 原因不明のフリーズ

     WWWブラウザにインターネットエクスプローラを 使っているのですが、ある日を境に、ブラウザ上に 表示されたフォームに文字を入れて検索などを行うと 10秒くらい画面がフリーズし、その後、検索結果が表示 されるといった現象が起こるようになりました。  今、こうして質問を入力し、送信ボタンを押した 場合でも10秒ほどフリーズが起こります。  原因と改善方法を教えてくださいm(_ _)m

  • ページがロードされたら自動的に処理

    こんにちは。検索してみたのですが、見つからなかったので質問させていただきます。ASPのページで、そのページがロードされたら、自動的に送信のボタンをクリックしたのと同じ処理をしたいページがあるのですが、(新規登録したあと、確認するために最新10件のデータを表示したいのです)フォームの送信ボタンを押す処理はJavaScriptでできるのでしょうか? よろしくお願いします。

  • フォームからPOST、ブラウザで結果を受ける

    フォームのテキストボックスに検索語を入れて、ボタンを押すと、 その結果を既定のブラウザで表示させたいです。 調べると、フォームがpostをして、「フォームがその結果を受け取る」というのは、 よく見るのですが、フォームがPOSTして、ブラウザが開いてサーバから返ってきた結果を 表示するというのはできるのでしょうか? 一度、ブラウザを立ち上げてそこからPOSTさせているというテクニックなどを 使っているのでしょうか? 例で言えば、一つのテキストボックス、一つのボタンで、 testと文字を入れて、ボタンを押すと、何かしらのPOST処理が行われて、 ブラウザが開いてgoogleの検索結果が表示される。 このような事をしたいのです、 なお、検索語は数字のみなので、2バイト文字は使いません。 よろしくお願いします。