从AJAX请求返回数据

时间:2015-05-19 17:45:52

标签: javascript jquery ajax file

我想在文件中找到json数据。它会向console.log打印正确的文件数据。

如何将数据转换为变量x?当我运行代码时,x未定义。

   function getData() {
        $.get('data/APPFeaturesMetaData.json', function (data) {
            console.log(data);
            return data;
        });
    };

    var x = getData();

1 个答案:

答案 0 :(得分:3)

这是一个异步调用,所以var x = getData();在AJAX请求完成之前运行。

答案是,使用延迟它看起来像这样:

var request = $.ajax(
{
    url: url,
});

// When the request is done, do something with data.
request.done(function (data) {
    console.log(data);
});

在您的情况下,如果您想要返回数据,则会有所不同,您将遇到一些范围问题。修复非常简单,这是你最终代码的样子,我将在评论中解释一下:

function getData() {

    // This is where we store the data.
    var myData;

    // This will refference current object.
    // You need to keep the refference of this object.
    var self = this;

    $.get( 'data/APPFeaturesMetaData.json' ).done(function(data) {
        // the keyword `this` will not work here, because you're inside an AJAX callback.
        // When you say `this`, you're actually refferencing the AJAX object
        // And not the getData object.
        self.myData = data;
    });

    return myData;
};