我正在尝试获取ajax请求的结果,以设置一个可以在该请求之外访问的变量。我已经尝试过此JQuery - Storing ajax response into global variable,但是在beer$.getJSON函数之外我的变量$.ajax仍然是未定义的(我都尝试了)。

这是我的代码,在这里我可以看到console.log(beer)的结果。

var beer;
$.getJSON(jsonUrl, function (json) {
    beer = json;
    console.log(beer); // returns beer
});
console.log(beer); // returns undefined

var beer = (function () {
    var result;

    $.ajax({
        url: jsonUrl,
        success: function (data) {
            result = data;
            console.log(beer); // returns beer

        }
    });
    console.log(result); // returns undefined
    if (result) return result;
})();
console.log(beer); // returns undefined

最佳答案

这是一个异步请求,因此它会被触发,但是您的脚本在继续运行之前不会等待响应。如果您需要等待ajax请求完成,请尝试以下操作:

var beer;
$.getJSON(jsonUrl,function(json){
    beer = json;
    checkDrink();
});

function checkDrink() {
    console.log(beer);
}

关于jquery - jQuery-将Ajax jSON响应存储为变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4763918/

10-12 15:57