2016-07-16 12 views
0

私はクッキーに質問(複数選択)に対するユーザーの応答を保存しています。ユーザが20の質問を試みた後にのみ、サーバはクッキーからデータを抽出する。 問題は、ユーザーが試したときに、10の質問をしてサイトを離れることです。 Cookieの応答はサーバーで利用できません。 この要件では、すべてのページの読み込みからCookieデータを抽出することができません。 Cookieの有効期限が切れる前にページロードをトリガーすることを考えていたので、余分なデータをサーバーと同期させることができます。どんな解決策も見つけることができませんでした。ページ読み込みなしでサーバーにクッキーデータを送信

たとえば、この問題上の任意のポインタを感謝:500ページはすべて、あるは、複数の選択肢の質問です。 ユーザーが最初の質問を試みると、その答えはクッキーに記録されます。 2ページ目/ 2ページ目/次ページ読み込み。サーバーはクッキーを見て、1つのレコードしか持たないので何もしません。 次の質問...再びユーザーの応答はCookieに保存されます。サーバーは20個のレコードが見つかるまで何もしません(20個のレコードのインジケーターはフラフで表示され、20個のレコード/質問すべてのクッキーデータを抽出してデータベースを更新すると、クッキーをクリアして20レコードユーザーがクッキーに記録し、サイトを離れている10次の質問を解決した場合、サーバーは最後のページのロードまで、それらを抽出していないので、抽出の前に。 は今、それらの余分10個の質問は失われます。

おかげで、 パンカジ

+0

「ユーザーがページから離れて移動するときに、どのように機能(例:AJAXリクエスト)をトリガーするのですか? 'beforeunload' [イベント](https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload)を調べるべきです。あなたが何か他のことを求めているなら、私はそれが何であるかは不明です。 –

+0

ユーザーがいつサイトを離れることになるかわからないので、クッキーが期限切れになる直前にトリガーが発生する必要があります。ユーザーがサイトから移動した後にサーバーにクッキーデータを送信できる方法はありますか。 – user34484

+0

セッションクッキーを使用しているようですが、ユーザーが実際にセッションを終了することなくサイトを離れることができます。セッションは通常、* browser *が閉じられると終了します。 –

答えて

0

「セッションクッキーが期限切れになったときにイベントをトリガーする方法は?」ブラウザに特別なAPIが公開されていない限り、できないと思いますが、ブラウザが閉じられたときか、または特定のdaであなたの特定のウィンドウが閉じられたときにスクリプトの実行が停止されます。

  1. がサーバに要求を送信しbeforeunloadeventハンドラを追加します:あなたは、サーバーのロジックを変更したり、ユーザーが明示的に「保存」ボタンを提供したくない場合は

    、私はこれを提案しますユーザーがページを離れることを示す「flush」フラグとともに、残りのすべてのデータをサーバーが保存する必要があります。

  2. ユーザーが別の質問ページに進む予定がある場合、そのイベントハンドラを無効にします。

2の実装方法は、アプリケーションが現在質問ページ間の移行をどのようにトリガーするかによって異なります。

+0

ありがとうVidor!あなたのアプローチは非常に便利です。 – user34484

+0

@ user34484喜んで助けてください。 –

+0

おかげさまでVidor!あなたのアプローチは非常に有用です。ポイント2私は、サーバーが次のurl要求を知っているので、その質問urlがフラッシュフラグを無視するか、そうでなければflushフラグを尊重すれば取り組むことができます。私が見る唯一の挑戦は、 /ブラウザ自体。 – user34484

関連する問題