ページをアンロードする前にサーバーへのポストを実行しようとしていて、それに続いてthisが問題なく動作しています。私の問題は、window.unloadの$ .postが、の後に読み込まれたです。私は、次を取得し、サインアウトリンクでそれを試してみましたが、私のログをチェック:アンロード後にWindow.unloadがポストします
Started GET "/signout" for 127.0.0.1 at 2012-11-22 00:15:08 +0800
Processing by SessionsController#destroy as HTML
Redirected to http://localhost:3000/
Completed 302 Found in 1ms
Started GET "/" for 127.0.0.1 at 2012-11-22 00:15:08 +0800
Processing by HomeController#index as HTML
Rendered home/index.html.erb within layouts/application (0.4ms)
Rendered layouts/_messages.html.erb (0.1ms)
Completed 200 OK in 13ms (Views: 12.9ms)
Started POST "/unloading" for 127.0.0.1 at 2012-11-22 00:15:08 +0800
Processing by HomeController#unloading as */*
Parameters: {"p1"=>"1"}
WARNING: Can't verify CSRF token authenticity
Completed 500 Internal Server Error in 0ms
NoMethodError (undefined method `id' for nil:NilClass):
app/controllers/home_controller.rb:43:in `unloading'
最初の部分はサインアウトされた後、ユーザーはそれがポストを実行その後、をrootにリダイレクトされます(「/アンロード」) 。
'/ unloading'を最初に実行してから、アンロードアクションが何であれ実行しますか?
私は
$(window).unload ->
$.ajax {
async: false,
beforeSend: (xhr) ->
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))
, url: '/unloading'
, type: 'Post'
, data: {
p1: '1'
}
}
私のjqueryのポストとしてこれを持って更新
だから私はbeforeunloadするAJAX要求を転送しなかったし、それが働いていたが、私は、ダイアログボックスを削除するreturn null
をしなければなりませんでした表示されていない場合、ajaxはダイアログのポップアップで(まだ「はい/いいえ私はこのページを残したいです」と答えなくても)引き続きトリガーしていたからです。結果は次のとおりです。
window.onbeforeunload ->
$.ajax {
async: false,
beforeSend: (xhr) ->
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))
, url: '/unloading'
, type: 'Post'
, data: {
p1: '1'
}
}
return null
また、私はChromeでこれを試しただけで、期待通りに動作しています。しかし、他のブラウザで試してみてください。
申し訳ありませんが、返信が少し遅れていたら。前にbeforeunloadにAjaxブロック全体を追加しようとしましたが、最初に「このページを終了してもよろしいですか?追加されたメッセージとして[オブジェクトオブジェクト]を持つ。私は前に検索し、それはbeforeunloadの目的だと思う...どうすればそれを削除できますか? – index
そして、アンロードイベントは、ページがすでにアンロードされたときにトリガーされるという情報に感謝します。 – index
あなたの 'beforeUnload'関数から' null'を返そうとします。http://stackoverflow.com/questions/1119289/how-to-show-the-are-you-sure-you-want-to-navigate-away-from-このページの先頭に戻る – nickaknudson