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