javascript - jQuery.ajax 返回空数组

标签 javascript jquery

我目前正在学习使用 API。我正在从我的 Github 存储库检索数据。我试图让脚本将 JSON 信息加载到 githubData 变量中。但是当我将 githubData 变量记录到控制台时,它返回一个空数组。 然而,如果我在页面加载后创建一个具有完全相同功能的新变量,则脚本将完全按预期工作。 当页面加载时,它并没有加载实际数据。它加载一个空数组。我意识到该函数是异步的,那么当我加载页面时如何使数组不为空? 这是我的代码:

var githubAPI = 'https://api.github.com/repos/zacharysohovich/ticTacToe/readme';
var items = {};
jQuery.ajax({
  url: githubAPI,
  contentType: 'application/json; charset=utf-8',
  success: function(resultData) {
    $.each(resultData, function(key,val) {
      items[key] = val;
    });
  }
});
var githubData = $.map(items,function(k,v) {
  return ("<p>" + k + ": " + v + "</p>");
});

最佳答案

问题在于它是一个异步调用,这意味着一旦触发请求,它就会进入下一段代码。一旦到达 github,数据项仍然是一个空对象,因为尚未收到 api 响应。 我将实例化 var items = {} 下面的 githubData 变量 像这样

var items = {} var githubData; 然后在 success: 函数中执行 $.each 之后,您可以将

githubData = $.map(items,function(k,v) { return ("<p>" + k + ": " + v + "</p>"); });

这可以确保 api 调用已完成,并且只要响应返回一些内容,项目中就应该包含一些内容

关于javascript - jQuery.ajax 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420603/

相关文章:

javascript - 将 native 动画化为一个圆圈的多个 View

JavaScript 正则表达式 (x)

javascript - 如何在包含日期范围的数组中填充日期?

jquery - 添加 img 属性的响应式图像替换

javascript - 在同一选项卡中打开我的网址页面

javascript - Bootstrap Timepicker - 分钟间隔

javascript - "Uncaught TypeError: Cannot read property ' 名称 ' of undefined"在递增数字时单击按钮

javascript - 如何检测 Javascript/JQuery 对象是否有高度?

javascript - 在 JSON 中查找给定键的值并使用 javascript 更改该值

javascript - 文本选择和冒泡