如何在变量中存储AJAX调用数据?

时间:2013-01-06 20:15:25

标签: javascript jquery

  

可能重复:
  Can’t use returned data in .ajax method of jQuery anywhere but the function itself

我正在尝试将AJAX调用的返回值存储到变量中。

var getJSONData = function(){
    JSONData = $.getJSON('/api');
};

var reloadPage = function(json_data){
    //Do some DOM manipulation with the JSON data
    //console.log(json_data) returns undefined
};

reloadPage(getJSONData());

此代码不起作用。当我直接访问它或使用以下代码

时,api可以工作
$.getJSON('/api', function(data){console.log(data)});

这样可以获取我想要的JSON数据。

知道如何让它发挥作用吗?

4 个答案:

答案 0 :(得分:5)

怎么样

var getJSONData = function(callback){
    JSONData = $.getJSON('/api', callback);
};

var reloadPage = function(json_data){
    //Do some DOM manipulation with the JSON data
    //console.log(json_data) returns undefined
};

getJSONData(reloadPage);

答案 1 :(得分:3)

AJAX代表异步 JavaScript和XML。执行AJAX调用时,您的数据不会立即可用,因此您需要使用回调函数来响应以后的响应。

jQuery AJAX调用提供了您可以使用的Deferred Objects

var getJSONData = function(){
    return $.getJSON('/api');
};

var reloadPage = function(data){
    console.log(data);
};

getJSONData().done(reloadPage);

答案 2 :(得分:2)

$.getJSON不会返回JSON,而是返回承诺。

最简单的就是像这样使用它:

 $.getJSON('/api', reloadPage);

当浏览器收到响应时,将使用JSON数据作为参数调用reloadPage函数。

答案 3 :(得分:2)

$.getJSON()是异步的。它可以通过回调访问:

var getJSONData = function(callback){
    $.getJSON('/api').success(data) {
       callback(data);
    };
};

var reloadPage = function(){
    getJSONData(function(json_data) {
    //Do some DOM manipulation with the JSON data
    //console.log(json_data) returns undefined
    });
};

reloadPage();