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

可能重复:
除了函数本身之外,不能在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调用时,您的数据不会立即可用,因此您需要使用回调函数来响应以后的响应。

jQuery AJAX调用提供了可以使用的延迟对象 。

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

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

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

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

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

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