如何将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();