【问题标题】:Access the Values in this Array [API Result]访问此数组中的值 [API 结果]
【发布时间】:2016-02-29 09:03:01
【问题描述】:

我一直在尝试学习 API,我有几个正在工作,但这个让我很难过,我无法让它工作/显示。

我正在尝试访问响应中的特定属性,该属性出现多次,然后在页面上显示。

到目前为止,我的通话工作正常,我只需要完成这部分:

          success: function (resp) {


          });

然后我将尝试在表格中列出所有这些结果:

    {
  "gameId": 2540635808,
  "mapId": 11,
  "gameMode": "CLASSIC",
  "gameType": "MATCHED_GAME",
  "gameQueueConfigId": 2,
  "participants": [
    {
      "teamId": 100,
      "spell1Id": 11,
      "spell2Id": 4,
      "championId": 19,
      "profileIconId": 23,
      "summonerName": "Like or Leave",
      "bot": false,
      "summonerId": 54108020,
      "runes": [
        {
          "count": 7,
          "runeId": 5245
        },
        {
          "count": 1,
          "runeId": 5290
        },
        {
          "count": 4,
          "runeId": 5316
        },
        {
          "count": 2,
          "runeId": 5337
        }
      ],
      "masteries": [
        {
          "rank": 4,
          "masteryId": 6111
        },
        {
          "rank": 5,
          "masteryId": 6211
        },
        {
          "rank": 1,
          "masteryId": 6223
        },
        {
          "rank": 5,
          "masteryId": 6232
        },
        {
          "rank": 1,
          "masteryId": 6242
        },
        {
          "rank": 5,
          "masteryId": 6252
        },
        {
          "rank": 1,
          "masteryId": 6262
        }
      ]
    },
    {
      "teamId": 100,
      "spell1Id": 4,
      "spell2Id": 3,
      "championId": 25,
      "profileIconId": 774,
      "summonerName": "SackOfRyze",
      "bot": false,
      "summonerId": 71487363,
      "runes": [
        {
          "count": 6,
          "runeId": 5245
        },

如果有人可以帮助我显示“summonerName”,那将非常有帮助。

我不确定它是否重要,但数组的顶部,“GameID,MapID”等与实际调用不匹配。调用找到的匹配项是响应中包含的召唤者 ID 之一。就像我说的,不确定这是否重要,但我想我会提到。

我想我会用这样的方式访问它:

players = resp[summmonerID].participants.length;
document.getElementById("listPlayers").innerHTML = players;

              resp[summonerID].participants.forEach(function (item) {
  document.getElementById("masteryPagesAll").innerHTML = document.getElementById("playersAll").innerHTML + item.summonerName + "<br />";
              });

谢谢

【问题讨论】:

  • 能否提供更简洁/可读的输出
  • 您好,抱歉,我想您还希望我向您展示什么?
  • 输出可读性更强的那个。我的意思是成功回调时resp 中的数据。

标签: jquery html json api


【解决方案1】:

首先,响应是字符串。您应该将其转换为对象以访问其属性和值。

var data = JSON.parse(resp);

然后你可以像你想的那样使用那个数据对象。

【讨论】:

  • 您好,感谢您的回复。如果我错了,我还在学习,所以请纠正我,但我想包括这个:type:'GET',dataType:'json',data:{},意味着我不需要解析响应?
  • 是的,dataType:'json' 应该可以工作。用于验证您是否可以console.log(typeof(resp));。您的代码看起来不错,运行时是否出现任何控制台错误?
  • 只有这个:error: function (XMLHttpRequest, textStatus, errorThrown) { alert("error getting Summoner data2!");所以它肯定会命中第二个 API 调用。此外,我一直在 Google Chrome 中进行测试,API 调用返回代码“200”,其 URL 与应有的 URL 匹配(成功调用),但我似乎无法显示所有玩家姓名:(
  • 嘿,它只是显示文本“获取 Summoner data2 时出错!” ://
  • 这是您已提醒的字符串,尝试alert('errorThrown')console.log(errorThrown) 看看它的价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多