首页 > 解决方案 > 如何使用 AJAX 方法将来自 Github Gist 的 JSON 数据存储到数组中?

问题描述

我正在尝试将 JSON 数据存储在一个变量中,然后随机访问它。(随机超级英雄名称)

JSON 数据是下面的 GitHub 要点

https://gist.githubusercontent.com/abroroo/004fa0a28b94bc7100b4f1bf53acb69d/raw/09fd4ca4ed1ddb21010a48502cf0846a844b658c/authors.json

我正在尝试使用 ajax 方法(第一次),我认为它不起作用。我在控制台中变得不确定。

这是我的代码:

var namesData;

function getNames() {
  return $.ajax({
    headers: {
      Accept: 'application/json'
    },
    url: 'https://gist.githubusercontent.com/abroroo/004fa0a28b94bc7100b4f1bf53acb69d/raw/09fd4ca4ed1ddb21010a48502cf0846a844b658c/authors.json',
    success: function (jsonNames) {
        namesData = JSON.parse(jsonNames);
        console.log('namesData');
        console.log(namesData);
    }
  });
}

这是获取随机名称的函数


function getRandomName() {
  return namesData.names[
    Math.floor(Math.random() * namesData.names.length)
  ];
}
console.log(getRandomName());

任何帮助表示赞赏!

标签: javascriptjqueryjsonajaxajaxform

解决方案


我检查了你的 gist json 文件,它有语法错误。原始json是

[
  "names": [
    {
        "superhero":"Batman", 
        "publisher":"DC Comics", 
        "alter_ego":"Bruce Wayne",
        "first_appearance":"Detective Comics #27",
        "characters":"Bruce Wayne"
    },

array.so下不应该有键,所以像这样将根数组更改为 dict

{
  "names": [
    {
        "superhero":"Batman", 
        "publisher":"DC Comics", 
        "alter_ego":"Bruce Wayne",
        "first_appearance":"Detective Comics #27",
        "characters":"Bruce Wayne"
    },

推荐阅读