我在javascript脚本上遇到了一个奇怪的问题。
这是我的代码:
function checkDiscountCode()
{
var discountCode = $('#korcode').val();
var errorMessage = $('#errorMessage').text();
if(discountCode.length > 2)
{
$.getJSON( 'calc.php?code=' + discountCode, function( json )
{
var color = json.color;
var soort = json.soort;
var waarde = json.waarde;
var message = json.message;
if(errorMessage != message)
{
$('#error').html('<font color="' + color + '" id="errorMessage">' + message + '</font>');
}
if(message == 'OK!')
{
var outputData = soort + '-' + waarde;
console.log('outputData = ' + outputData);
return outputData;
}
});
}
}控制台日志给出了正确的数据,例如0-12.00,但当我在另一个函数中请求此函数时,例如只有一个警报(checkDiscountCode());它显示未定义。
有谁能帮帮我吗?我看不出有什么问题..
提前感谢!
发布于 2012-03-11 10:54:20
您正在从传递给异步工作的函数的回调中返回。您必须调整代码以接受回调,并更改调用方以处理异步回调这一事实。
这意味着,而不是这样:
// won't work
function checkSomething() {
someAsynchronousFunction(function(result) {
return result == "success";
});
}
if(checkSomething()) {
alert("It worked.");
}else{
alert("It didn't work.");
}您必须将您的代码更改为如下所示:
function checkSomething(callback) {
someAsynchronousFunction(function(result) {
callback(result == "success");
});
}
checkSomething(function(result) {
if(result) {
alert("It worked.");
}else{
alert("It didn't work.");
}
});https://stackoverflow.com/questions/9651989
复制相似问题