Javascript 使用ajax成功调用之外的数据

Javascript 使用ajax成功调用之外的数据,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我试图从AJAX成功调用中获取数据,以便在代码中的其他地方使用。但是,由于某种原因,最后一行中的console.log返回“undefined”。我还在数据上尝试了JSON.parse()和JSON.stringify(),这两种方法都返回了错误 function loadInfo() { jQuery(function($) { $.ajax({ type: "POST", url: "/ad

我试图从AJAX成功调用中获取数据,以便在代码中的其他地方使用。但是,由于某种原因,最后一行中的
console.log
返回“undefined”。我还在数据上尝试了
JSON.parse()
JSON.stringify()
,这两种方法都返回了错误

function loadInfo() {
    jQuery(function($) {
        $.ajax({
            type: "POST",
            url: "/admin.php",
            data: {loadInfo: 1},
            dataType: "json",
            success: function(data) {
                getResponse(data);
            }
        })
    });
}

var data;
function getResponse(response) {
    data = response;
}

console.log(data);
但是,如果我在函数中添加了console.log

var data;
function getResponse(response) {
    data = response;
    console.log(data);
}

它按预期输出数据。我以为数据变量是全局的。还是别的什么?

AJAX代表异步Javascript和XML。异步意味着它正在发出一个请求,但由于到达、处理和响应可能需要时间,所以它不会等待请求完成,而是继续操作

当你这样做的时候

console.log(data);
在您的代码中,请求仍在执行中,由于尚未完成,因此回调尚未执行。回调仅在请求成功完成时执行

修正:


我们的想法是,我们需要在请求完成后继续处理请求的结果。注意,my console.log不在
getResponse
内,因为最好将结果表示与结果计算分开。

var数据使其未定义。在进行AJAX调用之前,它是未定义的。如果日志在函数之外,那么它将在AJAX之前运行。
function loadInfo() {
    jQuery(function($) {
        $.ajax({
            type: "POST",
            url: "/admin.php",
            data: {loadInfo: 1},
            dataType: "json",
            success: function(data) {
                getResponse(data);
                console.log(data);
            }
        })
    });
}

var data;
function getResponse(response) {
    data = response;
}

//console.log(data);