我不太明白这个问题。我试图将来自同步 ajax 调用的数据存储在 var 和控制台日志中,但是,最终的控制台日志在同步调用完成之前运行,因此返回 undefined
。
代码:
$(document).ready(function() {
var longitude = 51.4543,
latitude = 0.9781,
apiKey = "",
result;
$.ajax({
async: false,
url: "https://api.forecast.io/forecast/" + apiKey + "/" + longitude + "," + latitude,
dataType: "jsonp",
success: function(data) {
result = data;
//working
console.log(result);
},
});
//not working
console.log(result);
});
我的印象是 JS 会等待同步调用完成后再继续,但我猜情况并非如此?如果没有,如何将获取响应存储在全局变量中以便在其他地方使用?
最佳答案
您正在发出 JSONP 请求。 JSONP 无法同步执行。因此,async: false
被忽略。
您必须重构代码才能异步工作。
如果您需要返回其他函数可以用来获取数据的内容,请使用 promise 。 $.ajax
将返回一个。
global_var = $.ajax(...);
global_var.done(function (data) { console.log("Use some data", data); });
global_var.done(function (data) { console.log("Use some data again", data); });
关于javascript - 来自同步 AJAX 调用的控制台日志数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37343174/