• ベストアンサー

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

サーバーサイドの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

  • サーバーサイドで処理する「JSCRIPT」とは?

    サーバーサイドで処理されるIIS上で動く「JSCRIPT」について教えてください。 (1)HTMLにJAVASCRIPT同様の埋め込みコーディングができるのですか? (2)ASPのようにブラウザ表示時のソースにはコードが見えないようになるのでしょうか? (3)簡単なサンプルがあればお教えください。

  • サーバーサイドスクリプトについて

    現在phpを勉強しようと思ってるのですが、少し疑問に思ったことがあるので質問させてください。 phpなどのサーバーサイドスクリプトは「サーバー上でプログラムが実行され、その結果だけがクライアントへ送られる」ということを知りました。 これはHTMLとちがって、そのサイトをブラウザでソース表示したときにphpのタグは表示されずに出力されたテキストなどだけが表示されるというような意味で合ってるのでしょうか??

    • ベストアンサー
    • PHP
  • クライアントサイドスクリプト

    1.クライアントサイドスクリプトでWEBサーバ上のファイル(txt?xls?csv)の有無を確認して、 (なければブラウザに「ファイルがありません」などの表示。) 2.そのファイルの値を変数に取得しておき、フォームに入力された値との計算に使い、 計算結果をブラウザに表示 ということはどのようにしたらできますか? ちなみにファイルのデータはエクセルでいうと7行3列ほどのもので少ないです。 入力された値がエクセルファイルのA列にあればB列の値を乗算するというような感じです。 (値を変数に取得しなくてもできるものなのかどうかもよくわかっていません。) ASP+IIS+VBSCRIPTは少しやったことがあるのですが、クライアントサイドとなるとJAVASCRIPTかVBSCRIPTになるのでしょうか?? サーバの負荷を減らしたくてクライアントサイドでできないかということなのですが・・

  • ブラウザーからサーバ側のaspファイルを読み込む方法について

    クライアント側のVBscriptやJavaScriptなどのスクリプト 言語から画面を遷移しないでプログラム内でaspファイルを 呼びサーバ側での処理をした後にまたその後のプログラム を実行するような処理をしたいのですがどのように記述し たらよいのでしょうか? (クライアントのプログラム内でサーバ側のaspファイルの 関数を呼び処理の結果をクライアントのスクリプト言語に 反映させたいのですが。。。)

  • ブラウザのHTTPリクエストを参照したい

    画面遷移時にブラウザ側でHTTPリクエストがどのように発行されているかを参照する手段を探しています。 Webサーバー側でHTTPリクエストの内容をログに出力する方法はわかっているのですがサーバー操作は不可なのでクライアント側で参照する方法を探しています。 ツール、設定なんでもいいのでアイデアがあれば教えていただけないでしょうか。 よろしくお願い致します。

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

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

    • ベストアンサー
    • AJAX
  • 検索後のページ再表示初期化

    すみませんが、どなたか教えて下さい。 ・index.jsp(トップページ) ・A.jsp(検索ページ) ・Action.java ・Form.java ある検索条件を設定し、検索ボタンをクリックしてから検索結果を表示させます。(A.jsp)その後トップページ(index.jsp)に戻り、再度、検索ページを表示させると前回の検索結果が表示されてしまいます。 A.jspの検索ページの初期表示はAction.javaでtype=0と判断し、処理を行い、「検索」ボタンクリック時にJavaScriptでtypeに1をセットしAction.javaでtype=1の検索処理を行います。が、A.jspを再表示した場合、Action.javaでtype=1の処理を実行してしまいます。 再表示時(別の画面に遷移する時)にtype=0の初期化処理を行いたいのですがどのようにしたらいいでしょうか?

    • ベストアンサー
    • Java
  • あるデバイスが接続されたサーバをクライアントPCからブラウザで操作でき

    あるデバイスが接続されたサーバをクライアントPCからブラウザで操作できるようにしたいのですが、方法がわかりません。 そのデバイスを制御するアプリケーションはすでにあり、サーバ上で常に動作しているものとします。 このアプリは、デバイスを制御するプロセスと画面を表示するプロセスの2つに分かれており、互いにPostMessageで通信しあっています。画面表示アプリは従来サーバ単体で動作する用に作られたもので独自の画面表示プログラムです。 考えたのは、サーバにHTTPリクエストを送りサーバ側でActiveXなどのコンポーネントを動的に生成し、その中で既存のアプリのウィンドウハンドルを取得してPostMessageすることによってアプリを動かします。 ここまではできるのですが、そのアプリから処理結果を受け取る方法がわかりません。 PostMessageで行わせた処理の結果を元に、ASPで画面を更新してクライアントに返したいのです。 ActiveXからアプリにPostMessageした後、アプリからメッセージが投げられるのを待つというようなことができるのでしょうか? アプリがサーバ上で動的に生成されたActiveXコンポーネントのWindowsハンドルを取得して、PostMessageするなどということができるのでしょうか。

  • javaScriptのセキュリティ

    javascriptの処理は、 クライアントサイドで改竄可能だと思っており、 高いセキュリティが求められる処理は、 サーバサイドがよい認識で合っていますでしょうか? 例えば、SQLインジェクション対策をjavascriptでしていたとして、以下の手順だとすり抜けられたりしないでしょうか? (1)ウェブページを表示して、ブラウザの「html保存」でクライアントサイドに保管する。 (2)html内で宣言されたjavascriptの各リンクも、一旦ダウンロードする。 (3)クライアントに落としてきたjavascriptを改竄する。 (4)クライアントに落としてきたhtml内のjavascriptのリンクをローカルのjavascriptに差し替えて、 サーバにリクエストする。 高いセキュリティが求められる処理は、 サーバサイドがよい認識で合っていますでしょうか?

  • ブラウザ上で稼動するアプリを作りたい

    ゲームや業務ソフトといった様々なブラウザ上で動くソフトを開発したいと思っております。 基本、HTMLで画面を作成して動的処理をするプログラム言語でコーディングしていく方法でやりたいのですが、どういう言語が必要でしょうか? 簡単な業務ソフトならばJavascriptで作れそうですが、ゲームとなるとサーバー上で処理をするのでサーバーサイド系の言語、データベースや、クライアント系の言語もいると思いますが……

専門家に質問してみよう