因為公司業務需要,需要在用戶關閉當前瀏覽器頁面的時候把用戶修改的資料進行更新。
我使用的是onbeforeunload,在兩個頁面上使用了同一個監聽事件,但是只有一個頁面能起作用。不起作用的頁面能夠進入ajax方法中,但是請求發送不到后臺,引數和路徑都沒有問題,用其他方法呼叫是正常的,換個瀏覽器來打開這個頁面就可以發送請求到后臺。求大神指點
//關閉當前頁面保存修改的資料
window.onbeforeunload = onbeforeunload_handler;
//window.onunload = onunload_handler;
function onbeforeunload_handler(){
debugger;
cui("#deviceList-table").submit();
}
//更新方法
window.submitTechData = function (editableGridObj, changeData) {
debugger;
var allDate = {};
// 更新資料
if (changeData.updateData && changeData.updateData.length > 0) {
allDate = changeData.updateData;
}
cui.handleMask.show();
// 資料操作
if (allDate && allDate != '') {
jQuery.ajax({
url: "#URL()/...",
type: "POST",
data: JSON.stringify(allDate),
dataType:"json",
async: false,
contentType:"application/json",
success: function(data) {
cui.handleMask.hide();
if(data > 0) {
cui.message("操作成功", "success");
}else {
cui.message("操作失敗", "error");
}
editableGridObj.submitComplete();
}
});
};
}
uj5u.com熱心網友回復:
如果你寫的是單頁面應用要用 window.addEventListener("beforeunload", myScript); 這種方法添加監聽。
你兩個地方都用了 window.onbeforeunload = myScript 這樣的寫法, window 是全域物件,不同的路由用的也是同一個 window。
window.onbeforeunload 是一個變數,只能賦一個值,后面添加的自然會把前面的給覆寫掉。
而 window.addEventListener("beforeunload", myScript); 這種方法是可以同時添加多個同種監聽的,不會有覆寫的問題
還有添加了監聽記得把監聽去除掉 window.removeEventListener("beforeunload", myScript);
uj5u.com熱心網友回復:
需要在onbeforeunload中的ajax回呼函式中用return回傳一個空的字串轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/18639.html
標籤:Ajax
上一篇:基于云開發開發 Web 應用(二):界面 UI 開發
下一篇:大佬們幫忙看看
