JavaScript - 使用具有AJAX调用的函数的返回参数

时间:2014-12-17 12:34:15

标签: javascript jquery ajax json

我在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。我认为这可能是一个同步问题,但我不知道该怎么做。

有人可以帮忙吗?

1 个答案:

答案 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}}