如何存储AJAX调用's变量中的数据

How can I store an AJAX call's data in a variable?

本文关键字:变量 数据 调用 何存储 存储 AJAX      更新时间:2023-09-26

可能重复:
除了函数本身之外,不能在任何地方使用jQuery的.ajax方法中返回的数据

我正在尝试将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数据。

你知道我该怎么做吗?

怎么样

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);

AJAX代表异步JavaScript和XML。在执行AJAX调用的那一刻,您的数据并不是立即可用的,所以这就是为什么您需要使用回调函数来对稍后的响应做出反应。

jQueryAJAX调用提供了可以使用的DeferredObjects。

var getJSONData = function(){
    return $.getJSON('/api');
};
var reloadPage = function(data){
    console.log(data);
};
getJSONData().done(reloadPage);

$.getJSON不返回JSON,而是返回一个promise。

最简单的方法是这样使用:

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

当浏览器收到响应时,您的reloadPage函数将以JSON数据为参数进行调用。

$.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();