ajax return 注意事項


實際開發過程中,需要通過ajax獲得后台數據,如果數據不滿足業務要求,則中止執行后面代碼。有時ajax回調函數明明執行了return語句,但系統仍然執行后面代碼,這是什么原因呢?

為了探究問題原因,下面將幾種常見寫法逐一進行測試驗證。

寫法1

function test1() {
    var msg="test1";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            return "ajax成功";
        },
        error:function(e){
            return "ajax異常";
        }
    });
    return msg;
}

執行方法test1(),返回值為【test1】

寫法2

function test2() {
    var msg="test2";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            msg="ajax成功";
            return msg+'2';
        },
        error:function(e){
            msg="ajax異常";
            return msg+'2';
        }
    });
    return msg;
}

執行方法test2(),返回值為【ajax異常】

寫法3

function test3() {
    var msg="test3";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            msg="ajax成功";
        },
        error:function(e){
            msg="ajax異常";
        }
    });
    return msg;
}

執行方法test3(),返回值為【ajax異常】

寫法4

function test4() {
    var msg="test4";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            msg="ajax成功";
            return "ajax成功2";
        },
        error:function(e){
            msg="ajax異常";
            return "ajax異常2";
        }
    });
    return msg;
}

執行方法test4(),返回值為【ajax異常】

寫法5

function test5() {
    var msg="test5";
    var msg2="test5-2";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            msg="ajax成功";
            return "ajax成功2";
        },
        error:function(e){
            msg="ajax異常";
            return "ajax異常2";
        }
    });
    return msg2;
}

執行方法test5(),返回值為【test5-2】

寫法6

function test6() {
    var msg="test6";
    $.ajax({
        type:"POST",
        async:false,
        timeout:5000,
        dataType:"json",
        url:"?act=ok",
        success: function(d){
            msg="ajax成功";
            return "ajax成功2";
        },
        error:function(e){
            msg="ajax異常";
            return "ajax異常2";
        }
    });
    return "test6-2";
}

執行方法test6(),返回值為【test6-2】

結論

外層函數如果要獲得 ajax 回調函數返回值,須滿足以下條件

  1. ajax設置為同步方式
  2. 回調函數返回值必須賦值給外層函數變量,不能在回調函數內部通過字面量return


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM