Asp.net
jQuery Ajax呼叫 - 成功設置變數值[重複]
我有一個正在編寫的應用程序,它修改伺服器中記憶體對像上的數據。修改是通過基本上更新該對象的屬性的 ajax 呼叫執行的。當使用者完成工作時,我有一個基本的“保存更改”按鈕,允許他們保存數據並刷新記憶體的對象。
為了保護使用者,如果在對伺服器對象進行了修改(如果尚未保存)時嘗試離開頁面,我想警告他們。因此,我創建了一個名為 IsInitialized 的 Web 服務方法,該方法將根據是否保存更改返回 true 或 false。如果他們沒有被保存,我想提示使用者並給他們一個機會來取消他們的導航請求。
這是我的問題 - 雖然我的呼叫正常工作,但我似乎無法獲得 ajax 成功呼叫來在其回調函式上設置變數值。這是我現在擁有的程式碼。
////Catches the users to keep them from navigation off the page w/o saved changes... window.onbeforeunload = CheckSaveStatus; var IsInitialized; function CheckSaveStatus() { var temp = $.ajax({ type: "POST", url: "URL.asmx/CheckIfInstanceIsInitilized", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(result) { IsInitialized = result.d; }, error: function(xmlHttpRequest, status, err) { alert(xmlHttpRequest.statusText + " " + xmlHttpRequest.status + " : " + xmlHttpRequest.responseText); } }); if (IsInitialized) { return "You currently have unprocessed changes for this Simulation."; } }我覺得我可能試圖以不恰當的方式使用 Success 回調。如何在 Success 回調上設置 javascript 變數,以便我可以決定是否應提示使用者使用未保存的更改消息?
正如剛才所指出的,我正在進行非同步呼叫,這意味著在我的方法返回之前呼叫其餘程式碼。有沒有辦法使用那個 ajax 呼叫,但仍然擷取 window.onunload 事件?(不製作同步ajax)
由於您在解除安裝事件中需要此行為,因此您必須改為進行同步呼叫。但是,它可能會凍結瀏覽器視窗/選項卡,具體取決於呼叫需要多長時間,但是因為您實際上是在試圖阻止使用者關閉視窗……
添加
async: false到您的 JSON 以進行同步呼叫。