我在javascript中有以下功能:
function checkFunc(msg) {
$.getJSON("myurl.php", {
dtccode: msg
}, function(j) {
return j.boolField;
}); //JSON call
}
我将其称为另一个功能:
function check(msg) {
var ret = checkFunc1(); //some other function
ret = checkFunc2() && ret; //some other function
ret = checkFunc3() && ret; //some other function
ret = checkFunc() && ret;
if (ret) {
//code
}
}
我的问题是,我知道checkFunc应该返回false,但它返回true。我认为这可能是一个同步问题,但我不知道该怎么做。
有人可以帮忙吗?
答案 0 :(得分:2)
AJAX是异步的。意味着您必须使用回调函数来获取结果。像这样:
function checkFunc(msg, callback) {
$.getJSON("myurl.php", {
dtccode: msg
}, function(j) {
callback(j.boolField);
}); //JSON call
}
和
function check(msg) {
checkFunc(msg, function(result){
alert(result);
});
}
编辑:使用延期系统:
$.getJSON("myurl.php").done(function(j) {
callback(j.boolField);
});
您还可以添加fail()以检查可能的错误。查看文档:{{3}}