Jquery – 将Ajax jSON响应存储为变量

我试图获得ajax请求的结果,设置一个可以在该请求之外访问的变量.我尝试过这个 JQuery – Storing ajax response into global variable,但是我的可变啤酒在$.JSON和$.ajax函数之外仍未定义.

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

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插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...