获取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项目所遇到的问题,若有误,非常欢迎指正!