jquery报错ajax用return来返回值无效

错误:

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

你可能感兴趣的:(jquery报错ajax用return来返回值无效)