2011-09-23 42 views
1

我需要執行一次ajax請求,每次用戶決定離開頁面時發送一些數據服務器端。不過,我不想在離開時打亂他們:我不希望彈出消息出現。目前我的代碼是這樣的:javascript中的Ajax window.beforeunload:返回錯誤

window.onbeforeunload=function(){ 
    unloadAjax(); 
} 

這不起作用,並導致一個瞬間ajax錯誤消息出現。但是,如果我在onbeforeunload函數內添加return false;語句,則ajax可以正常工作。我該如何解決這個問題?

回答

2

當您添加return false時,顯示一個確認對話框,延緩頁面卸載。同時,AJAX請求結束。如果沒有包含return聲明,該頁面將立即卸載,終止所有活動連接(並破壞您的AJAX請求)。

+0

我得到了那部分,但仍然不知道如何延遲卸載剛好足以讓ajax完成 – whamsicore

+0

如果您的請求不需要很長時間,請使用同步AJAX請求。但是,您應該小心使用此方法。僅僅因爲你想要通知服務器,暫時停止瀏覽器的時間不夠用戶友好。如果你的網頁顯然是一個編輯器(包括必須保存的數據),那麼最好使用'return'通過'beforeunload'保存''''。 –

+0

謝謝,異步請求做到了 – whamsicore