• ベストアンサー

サーバーサイドアプリケーションでブラウザでの「検索中」表示

サーバーサイドのWebアプリケーションでブラウザで例えば「検索」ボタンを押した後に検索結果が表示されるまでの間、ブラウザには「検索中」と表示させて検索が終了した時点で結果を表示する画面に切り替わるという画面遷移のものを見かけます。 これはどのような仕組みなのでしょうか? HTTPの場合、サーバーからクライアント(ブラウザ)へはアクションを起こせないと思いますので、例えば「検索中」を表示しているページにJavaScript等を埋め込んで一定の間隔でサーバーに確認しにいくというようなことをしているのでしょうか?それとも他に方法があるのでしょうか? サンプル等がありましたらお教え頂ければ幸いです。 宜しくお願い致します。

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

だいたいの場合はmetaタグのrefreshかJavaScriptで定期的に確認する方法でしょうね・・・ 他には最近流行のAjaxを使ってロードと同時にリクエストを出して、レスポンスが全て返ってきたらコンテンツを書き換えるなんて方法もあるんじゃないでしょうか?

1percent
質問者

お礼

回答ありがとうございます。 定期的確認法が無難ですかね。 ただ、アドバイス頂いたAjaxについて調べてみたら興味が湧いてきました。Google MapもAjaxらしいですね。導入できないか深く調べてみようと思います。 ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

検索中のページを動的に作成出力して <body onload="location.href='結果ページ'"> のようにしておいて、 出力を完了させないままにしておけば、 「検索中」 と表示させておいて 結果ページが完成したら、 ページを出力完了するようにすると、 onloadが機能して次のページに移行するというようにできるような気がします。 (実際に試してみたわけではありません、その場合タイムアウトに気をつけないといけないような気がしますね)

1percent
質問者

お礼

回答ありがとうございます。 この度考えているシステムでは検索に2分くらいかかる場合も出てくる可能性があります。タイムアウトが一番気にかかります。アドバイス頂いた内容とサーバー側での検索終了フラグを立てるみたいなことをすればできそうな気もしてきました。 ありがとうございました。

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.1

検索条件などを入力して起動のボタンなどからPOSTさせたら、 そのまま処理を開始せずに条件等をセッションなどに補完し、 一旦、「検索中」の画面を表示させて、 即座に検索処理本体に折り返させれば、 見かけはそのようになるのではないでしょうか。 「処理開始」などのボタンもそのまま残しておくと 都合が悪いはずですから、このように配慮することは フェイルセーフ的にも良いと思います。

1percent
質問者

お礼

早速の回答ありがとうございます。 ご回答頂いた内容であれば見かけ上の画面遷移は可能かと思います。しかし、この度は100万件以上のレコードに対して検索をかける事を考えており、試しに目的のSQLを実行してみたら2分前後かかってしまいました(SQL文を工夫すればもう少し短くなるかも)。そのため検索中の間にタイムアウトにならない仕組みを考えていました。 ただアドバイスの中のセッションとページの自動ロードを使えばスマートにできそうな気も致します。 ありがとうございました。

関連するQ&A