0

这让我抓狂,我无法获取外部变量获取内部数据

很抱歉我用电话写的格式不好,如果有人可以帮助我解决格式,我很感激

  window.getReasons = function(line) {
    var $reasons;

    $reasons = "";
    $.get(window.location.protocol + "//" + window.location.host + "/" + "allLineReasons.js?line=" + line, function(returnData) {
      $reasons = returnData.toString();
      return console.log("T_T ----->" + returnData.toString());
    }, "html");
    console.log($reasons);
    return $reasons;
  };
4

2 回答 2

3

您要了解的最重要的事情是$.get()默认情况下是 ASYNCHRONOUS 。因此,发生的事情是,在您的调用之后您的console.log()and语句在返回它的值之前执行。returnget()get()

您可能希望利用when()此处的方法来处理从返回的延迟对象get()

window.getReasons = function(line) {
    var reasons = '';
    $.when(
        $.get(window.location.protocol + "//" + window.location.host + "/" + "allLineReasons.js?line=" + line)
    ).done(function(jqxhr) {
        data = jqxhr[0];   
        reasons = data.toString();
    });
    console.log(reasons);
    return reasons;
}
于 2013-05-08T19:24:30.347 回答
1

$reasons 直到服务器上的 GET 完成并返回响应后才会更新。但是您的 console.log 将在发出请求后立即执行。

于 2013-05-08T19:10:20.787 回答