jQuery Ajax返回值

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. 
+3

我不明白,你打电话'callback'不带参数的'data'当然是不确定的。 –

+0

此外,'complete'处理程序的第一个参数是'jqXHR',而不是数据。数据仅作为第一个参数传递给'success'。 – GSerg

+0

默认情况下,AJAX是异步的,只有当你得到它时,你才有你的数据,这就是你的“成功”回调。进行“同步”调用,或在成功功能中使用您的数据。 – skobaljic

你实际上并没有在任何地方存储data。你要做的就是反射回无论是给你的,就像斯特林说

我会修改它,像这样:

var globalData; 
function(callback){ 
    globalData = data; 
} 

然后console.log(globalData),你可以看到结果

AJAX是异步的默认情况下,只有当你收到数据时才有你的数据,这是你成功的回调。进行同步呼叫,或在您的成功功能中使用您的数据。

你的代码看起来应该是这样,而不是:

​​
+0

宾果。就是这样!谢谢你的帮助。 :) –