Web ページにExtJSグリッドがあり、ユーザーがページを離れたときに状態情報の一部をサーバーに保存したいと考えています。Ajax リクエスト onUnload でこれを行うことはできますか? そうでない場合、より良い解決策は何ですか?
4 に答える
Ajax リクエストを使用できますが、非同期リクエストではなく、必ず同期リクエストにしてください。または、ユーザーが変更を加えるたびに状態を保存するだけで、ユーザーのブラウザーがクラッシュした場合でもデータが保護されます。
同期 ajax 呼び出しを使用するという上記の回答があり、それが最良のシナリオです。問題は、アンロードがどこでも機能しないことです。ここを見ると、サファリでアンロード イベントを取得するのに役立ついくつかのトリックが見つかります...ユーザーが戻ってくる状況に備えて、Google Gears を使用してユーザー側のコンテンツを保存することもできますが、完全に安全に保つ唯一の方法です。その情報は、ユーザーがページにいる間、または変更を行っている限り、継続的に送信されます。
アンロード時に JavaScript を使用して Cookie を設定することもできます。Cookieに対するajaxの利点は、レポートに使用できるデータがあり、ユーザー(ログインしている場合)がさまざまなマシンでデータを利用できることだと思います。
ajax を使用することの欠点は、ブラウザー ウィンドウを実際に閉じるのが遅くなる可能性があることです。これは、サーバーの応答が遅い場合に煩わしい場合があります。
ユーザーがどのようにページを離れたかによって異なります。GUI に「ログオフ」ボタンがある場合、ユーザーがこのボタンをクリックしたときに ajax リクエストをトリガーできます。そうでなければ、onUnload でリクエストを行うのは得策ではないと思います。前に述べたように、同期リクエストを作成する必要があります... Cookie ソリューションの代替手段は、非表示のテキスト フィールドです。これは、 ajax に伴う履歴の問題を処理するRSHなどのツールで通常使用される手法です。