Unload 時に JavaScript の状態情報をサーバーに保存するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/73335

  •  09-06-2019
  •  | 
  •  

質問

を持っています ExtJS Web ページ上にグリッドがあり、ユーザーがページを離れるときにその状態情報の一部をサーバーに保存したいと考えています。Ajax リクエスト onUnload でこれを行うことはできますか?そうでない場合、より良い解決策は何でしょうか?

役に立ちましたか?

解決

Ajax リクエストを使用できますが、非同期リクエストではなく同期リクエストにしてください。あるいは、ユーザーが変更を加えるたびに単に状態を保存することもできます。これにより、ユーザーのブラウザがクラッシュした場合にもデータが保護されます。

他のヒント

上記の回答には、同期 ajax 呼び出しを使用するというものがありますが、それが最良のシナリオです。問題は、アンロードがどこでも機能するわけではないことです。見てみたら ここ Safari でアンロード イベントを取得するのに役立ついくつかのトリックを見つけることができます。Google Gears を使用して、ユーザーが再度アクセスする状況に備えてユーザー側のコンテンツを保存することもできますが、その情報を完全に安全に保持する唯一の方法は、ユーザーがページにアクセスしているか変更を行っている限り、情報を継続的に送信することです。

アンロード時に JavaScript を使用して Cookie を設定することもできます。ajax が cookie より優れている点は、レポートに使用できるデータがあり、ユーザー (ログインしている場合) がさまざまなマシン間でデータを利用できることだと思います。

Ajax を使用する場合の欠点は、ブラウザ ウィンドウを実際に閉じる速度が遅くなる可能性があることであり、サーバーの応答が遅い場合は迷惑になる可能性があります。

それはユーザーがどのようにページを離れたかによって異なります。GUI に「ログオフ」ボタンがある場合、ユーザーがこのボタンをクリックしたときに Ajax リクエストをトリガーできます。それ以外の場合、onUnload でリクエストを行うのは得策ではないと思います。前に述べたように、同期リクエストを行う必要があります...Cookie ソリューションの代替案は、非表示のテキスト フィールドです。これは通常、次のようなツールで使用されるテクニックです。 RSH ajax に伴う履歴の問題を扱います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top