獲取js方法中的ajax的返回值
由於需求在一個頁面中有多個ajax,而需要提前獲取某個ajax,其ajax的內容返回值在另外一個方法中會用到。
我的需求:先獲取到是否有登錄對象(這個方法同時被多次使用,封裝成了方法),再在另一個方法中使用此ajax返回值,判斷是否存在登錄的用戶。(當然**ajax可以嵌套使用,就沒有我這個坑了!**)
正確的封裝:
function loginUser() {
var results ;
$.ajax({
type:"GET",
url:"user/isLogin",//servlet的請求路徑(查詢是否存在當前登錄用戶,並返回一個)
resultData:"json",
async:false ,//保證此ajax執行完畢
// 試試這個需要異步: Cannot read property 'data' of undefined
success:function (result) {//返回的resultInfo對象
//console.log(result) ;//這裏結果返回值一切正常
results = result ;
return result ;//無法返到新的方法中
}
});
return results ;//必須在ajax外返回纔有效
//小結:想要獲取的方法中的ajax返回值,必須具備兩個條件
/*
1.此ajax必須是同步的(保證ajax先執行完,否則又會去執行下面的內容,導致找不到這個值的報錯)
2.return必須要在ajax外,方法內返回,只在ajax中返回無法接收到
*/
}
不滿足以上條件:均會報 找不到ajax中的返回值 錯誤
小結
1.此ajax必須是同步的:async:false(保證ajax先執行完,否則又會去執行下面的內容,導致找不到這個值的報錯)
2.return必須要在ajax外,方法內返回,只在ajax中返回無法接收到
此文來自本人java的web項目所遇到的問題,若有誤,非常歡迎指正!