繁体   English   中英

在 ajax 成功调用之外使用数据

[英]use data outside of ajax success call

我正在尝试从 AJAX 成功调用中获取数据,以便在代码的其他地方使用。 但是,由于某种原因,最后一行中的console.log返回“未定义”。 我还在数据上尝试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);

但是,如果我在 function 中执行了 console.log ......

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

它按预期输出数据。 我认为数据变量将是全局的。 或者是别的什么?

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

当你这样做

console.log(data);

在您的代码中,请求仍在执行中,由于它尚未完成,因此尚未执行回调。 回调仅在请求成功完成时执行。

使固定:

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);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM