从jQuery AJAX结果设置函数变量

时间:2017-02-15 19:23:04

标签: javascript jquery ajax

我在函数内部使用jQuery执行GET请求,并尝试使用结果设置在该函数中先前声明的变量。然而,它出现了未定义。我在这里错过了这个概念吗?我怎样才能做出类似这样的工作?感谢。

function doSomething1() {
    var x;
    $.get( window.location.href, { q: 'stuff', q2: $('input').val() }, function(data){
        // value shows up 
        console.log(data);
        x = data;
    });
    return x;
}

function doSomething2() {
      // comes up as undefined.
      console.log(doSomething1());
}

doSomething2();

1 个答案:

答案 0 :(得分:1)

这是$ .get()请求的异步效果的错误。在获得有机会做任何事情之前,您将返回x。围绕异步函数需要一段时间。

事件的顺序如下:

  1. doSomething2()来电doSomething1()
  2. doSomething1()定义x,没有值开始GET请求,并返回undefined
  3. doSomething2()记录返回的x
  4. GET请求完成并处理其成功函数