jQuery返回ajax成功函数结果

jQuery返回ajax成功函数结果,jquery,ajax,return,Jquery,Ajax,Return,我需要根据ajax成功函数的结果将true或false返回给我的alert()。但是,我遇到了一些问题,因为alert()结果总是“未定义”……关于如何解决这个问题,有什么想法吗 我将DoAjax作为它自己的函数,因为我在.js文件中多次调用它 var val = '12345'; alert( DoSerialVerification( val ) ); //this returns 'undefined' regardless of cType.length function DoSe

我需要根据ajax成功函数的结果将true或false返回给我的alert()。但是,我遇到了一些问题,因为alert()结果总是“未定义”……关于如何解决这个问题,有什么想法吗

我将
DoAjax
作为它自己的函数,因为我在.js文件中多次调用它

var val = '12345';  
alert( DoSerialVerification( val ) ); //this returns 'undefined' regardless of cType.length

function DoSerialVerification( piVal ){
    var fSuccess = function( oData ){
        var cType = oData.type
        if( cType.length > 0 ){
           alert( cType );                  //with piVal = 12345 cType will return 'MODULE'
           $('#dialog-1').attr('type', cType);
           return true;
        } else {
           return false;
        }
    };
    DoAjax({ Action: "DoSerialVerification", Value: piVal }, fSuccess );
}

function DoAjax( pAjaxParams, pSuccess ){
    $.ajax({url        : 'procedures?',
            data       : pAjaxParams,
            async      : false,
            type       : "POST",
            dataType   : "json",
            error      : function(oD,oT,oE){ alert( oD+'\n'+oT+'\n'+oE ) },
            success    : pSuccess
    });
}

您试图做的是不可能的:调用AJAX是一个异步过程,您的函数DoAjax将在从服务器收到响应之前返回。这就是您提供回调的原因:一旦服务器返回响应,它将根据结果输入错误回调或成功回调

更改此项:

alert( DoSerialVerification( val ) );
为此:

DoSerialVerification(val);

然后将警报调用移动到“fsucces”函数中。

您需要从DoSerialVerification函数返回一些内容。。。 改良剂量线性化功能:

function DoSerialVerification( piVal ){
    // here
    var result = false;

    var fSuccess = function( oData ){
        var cType = oData.type
        if( cType.length > 0 ){
           alert( cType );                  //with piVal = 12345 cType will return 'MODULE'
           $('#dialog-1').attr('type', cType);

           //here
           result = true;
        }
    };
    DoAjax({ Action: "DoSerialVerification", Value: piVal }, fSuccess );

    //here
    return result;
}

您是否验证了
过程?
是否返回数据?@IAbstractDownVoteFactory-是的过程返回'MODULE'@Elliot Nelson:jQuery支持同步ajax,“async:false”选项用于该操作。因为DoSerialVerification没有返回任何内容,但必须返回。我猜您希望嵌套的fsucces函数将其结果传播到DoSerialVerification。。。但否,不会传播fsucces的结果。