• ベストアンサー

ajaxでの動作

Webアプリを作成しているのですが次のようなことは可能なのか質問させてください。 「WebアプリでDBにデータを登録後(登録後は別のモジュールにてステータスが書き換えられる) 登録されたデータのステータスが定期的に画面(ブラウザ)に送信されるようにしたい」 というのがあります。 DB登録時、定期的にステータスを確認するというリクエストをAjaxでサーバーに投げて ブラウザ側は常にステータスの受信待ちの状態にできないかと考えています。 この受信待ちの状態の時に、ユーザーが色々な画面に遷移し、ステータスを確認する画面に 戻ってきた場合もこの受信待ちの状態は維持されているものなのでしょうか。

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

  • ベストアンサー
  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.1

実装次第ですね~。 クライアント側がデータの変更を常に監視する(ポーリング)場合、クライアントが画面遷移したりブラウザ等実行環境を一度閉じてまた開いたりすると、当然受信待ち状態は解除されます。それを考慮して、クッキー等何らかの形でポーリング中であることを同期リクエスト毎に伝えて、それをトリガーとしてクライアント側から非同期通信の再開を行う、といった形になりますかね。 pub/subのような形とする場合、サーバ側でデータの変更を常に監視し、クライアント側はポーリング中である、ということを意識せず常に非同期通信するようにする。そして、データ変更をトリガーとしてサーバは必要なクライアントの非同期レスポンスにのみ結果を乗せる、といった形ですかね。こちらの場合なら、ユーザが画面遷移しようが関係なくなります。

unko347
質問者

お礼

ご回答ありがとうございます。 前者のクッキーを使用する方法で検討してみようと思います。 ありがとうございました。

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

関連するQ&A

  • Ajax利用システムで画面全体を書き換えデータを一部埋める処理はサーブレット必要?

    Ajaxを利用して画面を作成したいのですが 画面遷移の際、新たに表示する画面全体を読み込み、その画面の一部に必要なデータを埋め込む ような処理はやはりサーブレットを利用するしか出来ませんよね? 当初、Ajaxクライアント+DWR+Javaモジュールだけで考えていたのですが サーブレットを利用した従来のWebシステムの一部の画面に Ajaxを適用する、というのが正しい考え方というものでしょうか?

  • Struts1.3.10でAjax連携

    Struts-1.3.10を使用しています。 データの登録・更新・削除等を行っているのですが、毎回の画面更新がだるいので Ajaxを利用して画面遷移を発生させないような処理を行おうと思っています。 JSFなどはf:ajaxタグなどで容易に再描画を行うことができるようですが このシステムではJSFは使用していません。 このシステムをStruts2に移行するのもStruts1と2では互換性がないということでためらっています。 そこでStruts1系でAjaxを利用して画面の一部(データの一覧部分など)を再描画させるための フレームワーク等があれば教えていただけませんか。 調べているとDWRを使用するというのがありましたが例としてあげられているのがStruts2系のものが多かったです。Struts1でも問題なく使用できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト

    Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。

    • ベストアンサー
    • AJAX
  • CakePHP + AjaxでWebアプリを開発しています。

    CakePHP + AjaxでWebアプリを開発しています。 ある登録画面にて、ひとつの入力項目がセレクトボックスになっています。セレクトボックスの中身はマスターテーブルから取得。通常はその中から選択してもらうのですが、欲しい選択肢が無い場合は、その場でマスターに追加登録できるようにしたいと思っています。 追加登録用のテキストボックスを用意し、$ajax->formで送信して、セレクトボックスの中身を最新の状態にすることはできたのですが、このテキストボックスが属すフォームはこの登録画面全体の フォームの中に入れられない(ネストできない)ので、テキストボックスとセレクトボックスを並べて表示することができません。このような場合は、スタイルシートで何とかするべきなのでしょうか?スマートな方法が見つからず、困っています。 また上とは別の方法も検討しています。というのは、テキストボックス自体が通常の登録作業には不要なので、常時表示している必要がありません。ですので、window.promptのプロンプトで追加したい文字列を受け取り、$ajax->observeForm内のhidden項目に値をセットするようにしたのですが、変更を認識してくれないようで、イベントが発生せず、submitされません。hiddenに値をセットした後、無理矢理フォームをsubmitさせると、画面自体が遷移してしまいます。試しに、hiddenをテキストボックスにして、直接入力すると、ロストフォーカス時にイベントが発生します。hidden項目のchangeイベントを無理矢理発生させるか、画面遷移をさせずにsubmitする方法はないものでしょうか? 以上、何か良い方法を御存知でしたらご教示いただけないでしょうか。よろしくお願いいたします。

  • DBで新規追加したデータがAjaxで反映されない

    いつもお世話になっております。 Apach・PHP・MySQLの構成でWEBアプリを作成しております。 データ表示画面でセレクトボックスを二つ設置して、 一つ目のセレクトボックスを選択した時、OnChangeイベントで Ajaxを利用し選択されたデータのキーに紐づくデータを取得して 二つ目のセレクトボックスに表示するといった処理を作りたいと考えています。 実際にプログラムを組み実装できたのですが、二つ目のセレクトボックスに表示する データを新規登録で追加して、再度一つ目のセレクトボックスを選択して データ表示をおこなっても、追加したはずのデータが表示されません。 ページロードや別画面から再度遷移してきても結果は同じなのですが、 一度ブラウザ(IE6.0)を閉じて再度接続してセレクトボックスを選択すると 追加したデータが表示されます。 以下が該当するAjax部分のソースです。 var Ajax; function CreateAjax(){ try{ Ajax = new ActiveXObject("Msxml2.XMLHTTP"); return Ajax; }catch(e){ Ajax = new ActiveXObject("Microsoft.XMLHTTP"); return Ajax; } } function fncAjax(strURL, strID){ try{ Ajax = CreateAjax(); Ajax.open("GET",strURL); Ajax.onreadystatechange = function(){ if(Ajax.readyState == 4 && Ajax.status == 200){ var obj = document.getElementById(strID); obj.innerHTML = Ajax.responseText; } } Ajax.send(null); }catch(e){ alert(e.description); } } function js_OnSelChange(){ try{ fncAjax("http://hogehoge.com/?key=" + document.form.selectdata.value, "ID"); }catch(e){ alert(e.description); } } どなたか対応策をご存知でしたら、ご教授願いいます。 以上。

  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • ajaxの使いどころ

    現在、会員制のWebサービスを作成しています。 まだ初期段階ですが、今は管理者用のユーザー管理ページに着手しており、サーバーサイド、クライアントサイド合わせて、およそ7割程度完成しているいるところです。 このページの現時点での実装では、ユーザーの削除、復活、パスワードリセット、登録情報の変更、新規ユーザーの登録といった全機能でajaxを使っています。 また、処理対象のユーザーは一覧のテーブルをクリックして選択するのですが、このクリック時にサーバーからユーザーの詳細情報を取得しており、ここでもajaxを使っています。 要するに、1ページ取得したあと、そのページ内でサーバーと通信を行う必要が生じたら、それはすべてajaxを使うという決まりです。 そこで、ajaxの運用についていくつかわからない点があり、質問させて頂きます。 (1) 会員専用ページという性質を考えると、ajaxでリクエストを送信した際にも、サーバーサイドではそのリクエストに対するセッションが有効かどうかをチェックする必要がありますよね? 一般的な会員向けWEBサービスでは、"ページ遷移毎"だけでなく、"ajaxでの通信毎"でもセッションのチェックを行うものなのでしょうか。 (2) ajaxでの通信時にセッションの有効性をチェックした結果、すでにタイムアウト等でセッションが無効な場合、一般的にはどうするべきなのでしょうか。 個人的にはlogoutページにリロードしたいと考えているのですが、このようにするには、サーバー側がレスポンスを返すときに、{error:{code:'1',message:'session_out'}}のようなJSONを返して、それをjavascript側で確認し、location.hrefを書き換える、というような流れで処理を行うことになるのでしょうか。 (3) そもそも、今回のように「1ページ内で生じるサーバー間通信は全てajaxで補う」という考え方は、一般的なものなのでしょうか。 なにが言いたいかというと、"セキュリティ等を考慮してajaxを使うべきではない処理"と"ajaxを積極的に使うべき処理"(もしくは、"ajaxを使っても差し支えない処理")の判断の仕方、つまり、ajaxの使いドコロがよく分かっていません。 以上3点につきまして、ご教授いただければ幸いです。

    • ベストアンサー
    • AJAX
  • Ajaxでページ変遷せずデータベースに書きこむには

    Ajaxを用いて、画面変遷なしで『Googleドキュメント』などのようにWeb上のデータを書き換えられるページを作ろうと思っています。 具体的には、どのようなことをすればよいでしょうか?

  • Ajaxでのページングについてなのですが...

    現在AjaxにてWebアプリを作成しております。 Webサービスからデータを取得して ブラウザに表示させることはできたのですが、 ページングで悩んでおります。 Webサービスで返ってくるデータは1ページ10件です。 検索フォームからある商品を検索して、返ってきたXMLタグにトータル件数、ページ数があります。 <TotalResults>249</TotalResults> //トータル件数 <TotalPages>25</TotalPages> //ページ数 データ取得の際にpageというパラメーターにページ番号を渡してやれば、 表示できることは分かるのですが、この先に進めません。(恥) Ajaxといいますか、javascriptでのページングはどのようにすればよろしいのでしょうか? 「Google」または、こちらの「教えて!goo」様のようなページングが理想なのですが、 何卒ご指導よろしくお願いいたします。 「追記」 また、上記の25ページ分のデータを一度に取得して表示させることはできるのでしょうか?

  • HTML(AJAX)-perl -DB(MySQL)-perl -HTML(AJAX)のデータの流れについて。

    こんにちわ。 早速ですがよろしくお願いします。 タイトルの通り、画面入力のデータAをperlに投げてAを元にperl側でDBデータ取得(A')、A'を元の入力画面で処理結果として出力する事を考えています。 HTML(AJAX)-perl -DB(MySQL)-perl ↑ここまではできたのですが、最後の perl -HTML(AJAX) が出来ず、A'を入力画面に返す方法が分かりません。 ちなみに処理結果(A')をHTML側でYahoo! User Interfaceを使用してテーブル処理する予定です。 お恥ずかしながらプログラミングに関しての知識が乏しくて恐縮なのですが、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
このQ&Aのポイント
  • NENSC600/Hを使っている際の半角・全角スペースの使い方を教えてください。
  • 全角スペースと半角スペースの違いや適切な使い方がわかりません。お教えいただけますか?
  • NEC 121wareのメールで半角スペースと全角スペースの違いを教えてください。
回答を見る