我有这个对 ajax 的 jquery 调用,
function findTaxForProcess(argPrc, argPrcAmount, argPrcDiscount) {
if (argPrc == '') { return 0; };
var _valToReturn;
if ($('#hdnTaxBefore').val() == "true") {
// if tax is calculated before discount
$.ajax({
url: '/AutoComplete.asmx/FindProcessTax',
type: 'POST',
timeout: 5000,
datatype: 'xml',
cache: false,
data: 'argProcess=' + argPrc + '&argAmt=' + argPrcAmount,
success: function (response) {
_valToReturn = $(response).find('double').text();
alert(_valToReturn);
}
});
}
else {
// the tax is calculated after discount
$.ajax({
url: '/AutoComplete.asmx/FindProcessTaxAter',
type: 'POST',
timeout: 5000,
datatype: 'xml',
cache: false,
data: 'argProcess=' + argPrc + '&argAmt=' + argPrcAmount + '&argDiscount=' + argPrcDiscount,
success: function (response) {
_valToReturn = $(response).find('double').text();
alert(_valToReturn);
}
});
}
alert('came here ' + _valToReturn);
return _valToReturn;
};
问题是第一个警报显示2.873
(在其他情况下,它显示2.178
),但问题是第二个警报,第二个警报显示,came here undefined
??? FTW?黑客出了什么问题?我已经搞砸了2天,但什么也没有!
为什么_valToReturn
在第二次警报时未定义的值?并首先定义?有什么帮助吗?
编辑: 警报在第一个警报之后came here _valToReturn
执行。所以,正如(几乎!)所有回答者都说,如果它在之前出现,它将是未定义的,我知道,但正如我所说,它是在之前而不是之后执行的。