我需要从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
});
}
答案 0 :(得分:1)
你需要从DoSerialVerification函数返回一些东西...... 修改了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;
}
答案 1 :(得分:0)
您尝试做的事情是不可能的:调用AJAX是一个异步过程,您的函数DoAjax将在从服务器收到响应之前返回。这就是您提供回调的原因:一旦服务器返回响应,它将输入您的错误回调或成功回调,具体取决于结果。
改变这个:
alert( DoSerialVerification( val ) );
对此:
DoSerialVerification(val);
然后将警报调用移至“fSuccess”功能。