我试图获得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);
}