jQuery Ajax返回值
问题描述:
我想从完成的jQuery Ajax调用中返回一个值。但是,我并没有收到JSON数据,而是收到“未定义”的信息。我如何修改我的代码来获取JSON数据而不是未定义?jQuery Ajax返回值
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.
答
你实际上并没有在任何地方存储data
。你要做的就是反射回无论是给你的,就像斯特林说
我会修改它,像这样:
var globalData;
function(callback){
globalData = data;
}
然后console.log(globalData)
,你可以看到结果
答
AJAX是异步的默认情况下,只有当你收到数据时才有你的数据,这是你成功的回调。进行同步呼叫,或在您的成功功能中使用您的数据。
你的代码看起来应该是这样,而不是:
+0
宾果。就是这样!谢谢你的帮助。 :) –
我不明白,你打电话'callback'不带参数的'data'当然是不确定的。 –
此外,'complete'处理程序的第一个参数是'jqXHR',而不是数据。数据仅作为第一个参数传递给'success'。 – GSerg
默认情况下,AJAX是异步的,只有当你得到它时,你才有你的数据,这就是你的“成功”回调。进行“同步”调用,或在成功功能中使用您的数据。 – skobaljic