我试图从完成的jQuery Ajax调用中返回一个值。但是,我收到的是“未定义”,而不是JSON数据。如何修改我的代码以获取JSON数据而不是未定义?
function callback(data) {
return data;
}
var xv = jQuery.ajax( {
url: 'http://www.domain.com/json.php',
dataType: 'json',
success: function(data) {
alert('Success.'); // This is alerted.
},
error: function(data) {
alert('File could not be processed.'); // This is not alerted.
},
complete: function(data) {
callback(data);
}
});
console.log(callback()); // Getting "undefined" here instead of data.
答案 0 :(得分:2)
默认情况下,AJAX是异步的,只有在获得数据时才能获得数据,这是您成功回调中的数据。进行同步通话,或在成功功能中使用您的数据。
您的代码应该是这样的:
function doWithJson(data) {
console.log(data);
}
var xv = jQuery.ajax( {
url: 'http://www.domain.com/json.php',
dataType: 'json',
success: function(data) {
doWithJson(data);
},
error: function(data) {
alert('File could not be processed.');
},
complete: function(data) {
/* Remove overlay */
}
});
答案 1 :(得分:0)
您实际上并未将data
存储在任何地方。你所做的只是反映给你的任何东西,就像斯特林说的那样
我会像这样修改它:
var globalData;
function(callback){
globalData = data;
}
然后console.log(globalData)
您可以看到结果