我想在window.onbeforeunload函數中使用AJAX來自動保存在我的網站中的頁面上的文本字段(沒有保存按鈕,它全部在後臺完成)。保存功能是用PHP編寫的。我開始嘗試以下:在onbeforeunload中使用Ajax自動保存字段數據
window.onbeforeunload = function(e){
var noteelement = document.getElementById('note');
var mynote = noteelement.value;
$.post('save_my_note.php', { thenote: mynote }, function(data){});
};
在研究中,我認識到,由於Ajax調用的異步特性,PHP代碼不被調用,因爲窗口的功能火災之前從封閉服務器。
當然,正如其他人所說,如果我將一個返回值添加到onbeforeunload函數,導致對話框彈出(這將是「你確定要離開」框),它工作以來該呼叫.post的有時間去運行,而對話框等待響應:
$.post('save_my_note.php', { thenote: mynote }, function(data){});
return mynote;
};
有人說,我有這樣的功能等待功能來改變這個帖子調用AJAX異步完整的,但不是非常精通語法,我不太清楚我需要的語法。我嘗試以下代替帖子功能:
$.ajax({
url: "save_my_note.php",
data: "{thenote: mynote}",
async: false
});
但是,這似乎並不工作。
有沒有人有一個簡單的代碼示例通過onbeforeunload(或onunload ??)函數以同步方式實現自動保存?我不是一個JavaScript或jQuery專家,我在網上找到的例子一直令人困惑。
您的意思是在最後的代碼片段中鍵入'async:false'嗎? – Ivan 2012-01-03 21:47:35
看到這個問題的答案:http://stackoverflow.com/questions/2970782/javascript-wait-until-ajax-request-finishes-to-close-page – Ivan 2012-01-03 21:49:30
請注意,onbeforeunload不會在移動瀏覽器觸發,所以如果你也適合移動市場,你可能需要以不同的方式處理事情 – 2012-07-10 09:51:31