Seb*_*ien 14 variables ajax jquery json
我正在尝试获取ajax请求的结果以设置在我可以在该请求之外访问的变量中.我已经尝试过这个JQuery - 将ajax响应存储到全局变量中但我的变量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
Run Code Online (Sandbox Code Playgroud)
chp*_*ipr 19
这是一个异步请求,所以它会被触发,但是你的脚本在继续之前不会等待响应.如果您需要等待ajax请求完成,请尝试以下方法:
var beer;
$.getJSON(jsonUrl,function(json){
beer = json;
checkDrink();
});
function checkDrink() {
console.log(beer);
}
Run Code Online (Sandbox Code Playgroud)
建议使用以下代码:
var beer = $.ajax({
url: jsonUrl,
async: false,
dataType: 'json'
}).responseJSON;
Run Code Online (Sandbox Code Playgroud)
关键时刻是:
async为false,将结果作为变量返回,而不是异步调用成功回调dataType为 json 以将服务器响应字符串解析为 json| 归档时间: |
|
| 查看次数: |
36101 次 |
| 最近记录: |