错误:
ajax用return来返回值无效
怎么发生的:
两种原因会导致这种情况:1.ajax未用同步 2.在ajax方法中直接return返回值。
错的原因:
好记性不如烂键盘。
下面列举了三种写法,只有第三种可正确获取到返回值
/**
* async:false,同步调用
* 返回1:2
* 失败
* 分析:ajax内部是一个或多个定义的函数,ajax中return返回值,返回到ajax定义函数,而不是ajax外层的函数
*/
function checkAccount1(){
var result = "1:2";
$.ajax({
url : path+'/user/checkAccount.do',
type : "post",
data : {},
async : false,
success : function(data) {
return "1:1";
}
});
return result;
}
/**
* async:true,异步调用
* 返回1:2
* 失败
* 分析:result = "2:1"和后面return result异步执行,导致return result先执行
*/
function checkAccount2(){
var result = "2:2";
$.ajax({
url : path+'/user/checkAccount.do',
type : "post",
data : {},
async : true,
success : function(data) {
result = "2:1";
}
});
return result;
}
解决方案:
/**
* 同步调用,且在ajax对全局变量进行设值
* 返回:"3:1"
* 成功
* 分析:先执行result = "3:1";再往下执行return result;
*/
function checkAccount3(){
var result = "3:2";
$.ajax({
url : path+'/user/checkAccount.do',
type : "post",
data : {},
async : false,
success : function(data) {
result = "3:1"; //不能加var,否则会失败
}
});
return result;
}
参考文章:https://blog.csdn.net/llllllloooooo/article/details/68491078