从jQuery Ajax返回值

时间:2016-09-25 19:05:09

标签: jquery ajax

我试图从完成的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.

2 个答案:

答案 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)您可以看到结果