我认为我的jQuery代码是正确的,但是控制台说它是未定义的

时间:2015-07-02 14:40:40

标签: javascript jquery json

我想从我的服务器加载JSON并使用jQuery来使用它。所以,我写了一些源代码。这是我的代码:

var myData;
$.ajax({
    url: "https://httpbin.org/get",
    success: function (json) {
        myData = json;
    }
});
console.log(myData);

我认为控制台应该说JSON值。但是当我运行这段代码时,控制台说它的值是undefined。怎么了?

1 个答案:

答案 0 :(得分:0)

ajax调用是异步的,请尝试:

var myData;
$.ajax({
    url: "https://httpbin.org/get",
    success: function (json) {
        myData = json;
        console.log(myData);
    }
});

编辑

Javascript是同步的,它是ajax调用谁不是,当你要求Ajax请求时,Javascript启动调用然后继续读取你的代码。服务器响应时会发出Ajax响应。如果您希望代码是同步的,可以写:

var myData;
$.ajax({
    url: "https://httpbin.org/get",
    success: receivedDatas
});
function receivedDatas(res){
    myData = json;
    console.log(myData);
}

然后你的JS在做出回应之前什么都不做

重新编辑:

以@fiddler写道:

完成答案
  

请注意,$ .ajax()有一个async参数(默认为true)   可以用来使它同步(参见api.jquery.com/jquery.ajax)