javascript - 来自同步 AJAX 调用的控制台日志数据

标签 javascript jquery ajax

我不太明白这个问题。我试图将来自同步 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/

相关文章:

javascript - 如果有人使用 jquery 选择美国,则需要更多输入

jquery - 使用 $(array).each 迭代数组

javascript - 使用 jQuery 选中一个框

jquery - 重力形式 jQuery 无周末

javascript - dojo.store.Observable、JSON REST 和 queryEngine

javascript - 聊天/聊天盒系统的最佳技术是什么?普通JS,JQuery,Websocket或其他?

javascript - 处理 HTTP 状态 Ajax 响应

Eclipse 中的 JavaScript 编辑器

javascript - ng-重复 : Limit to 10 most recent with exceptions

php - 通过ajax发送到php/sql时无法存储HTML