Javascript 使用jQuery获取JSON数据

Javascript 使用jQuery获取JSON数据,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我有一个JSON响应,如下所示: { "gameId": 2540832082, "mapId": 12, "gameMode": "ARAM", "gameType": "MATCHED_GAME", "gameQueueConfigId": 65, "participants": [ { "teamId": 100, "spell1Id": 32, "spell2Id": 7, "championId": 25,

我有一个JSON响应,如下所示:

{
  "gameId": 2540832082,
  "mapId": 12,
  "gameMode": "ARAM",
  "gameType": "MATCHED_GAME",
  "gameQueueConfigId": 65,
  "participants": [
    {
      "teamId": 100,
      "spell1Id": 32,
      "spell2Id": 7,
      "championId": 25,
      "profileIconId": 774,
      "summonerName": "MLG Elan",
      "bot": false,
      "summonerId": 77477471,
      "runes": [],
      "masteries": [
        {
          "rank": 5,
          "masteryId": 6111
        },
        {
          "rank": 1,
          "masteryId": 6122
        },
        {
          "rank": 2,
          "masteryId": 6131
        }
      ]
    },
    {
      "teamId": 100,
      "spell1Id": 4,
      "spell2Id": 32,
      "championId": 120,
      "profileIconId": 774,
      "summonerName": "Nuetzlich",
      "bot": false,
      "summonerId": 43800105,
      "runes": [
        {
          "count": 6,
          "runeId": 5245
        },
        {
          "count": 2,
          "runeId": 5335
        }
      ],
      "masteries": [
        {
          "rank": 3,
          "masteryId": 6114
        },
        {
          "rank": 5,
          "masteryId": 6312
        },
        {
          "rank": 1,
          "masteryId": 6322
        },
        {
          "rank": 5,
          "masteryId": 6331
        },
        {
          "rank": 1,
          "masteryId": 6343
        },
        {
          "rank": 5,
          "masteryId": 6351
        },
        {
          "rank": 1,
          "masteryId": 6362
        }
      ]
    },
    {
      "teamId": 100,
      "spell1Id": 13,
      "spell2Id": 7,
      "championId": 67,
      "profileIconId": 19,
      "summonerName": "Sonicmońgrel",
      "bot": false,
      "summonerId": 82267777,
      "runes": [
        {
          "count": 6,
          "runeId": 5245
        },
        {
          "count": 2,
          "runeId": 5335
        }
      ],
      "masteries": [
        {
          "rank": 5,
          "masteryId": 6312
        },
        {
          "rank": 1,
          "masteryId": 6323
        },
        {
          "rank": 5,
          "masteryId": 6331
        },
        {
          "rank": 1,
          "masteryId": 6343
        },
        {
          "rank": 4,
          "masteryId": 6351
        }
      ]
    },
我正在努力为每个玩家获取“召唤名称”,并将其显示在网站上:(

我需要什么jQuery

这就是获得数据的原因:

function getCurrentGame(summonerID) {
    $.ajax({
        url: "https://euw.api.pvp.net/observer-mode/rest/consumer/getSpectatorGameInfo/EUW1/" + summonerID + "?api_key=" + APIKEY,
        type: 'GET',
        dataType: 'json',
        data: {
        },
我在这里需要什么:

    success: function (resp) {


      }
显示召唤者的名字

在我的HTML中,我有以下内容,可以简单地根据名称构建列表:

Current Players (<span id="listPlayers"></span>)
<hr />
<span id="playerNames"></span>
当前玩家()

请随意修改,我真的不知道如何列出球员姓名:(


谢谢!!!

您的整个JSON对象就是resp

假设您想访问
“gameMode”:“ARAM”
,它将是
对应的gameMode


如果您想访问
“召唤名称”:“MLG Elan”
,则它将是
相应的参与者.召唤名称
(因为召唤名称位于称为参与者的数组中)

试试这个

var obj = jQuery.parseJSON( resp );
alert( obj.participants[0].summonerName);

在json
数据中。参与者
是一个数组,您可以使用
数组#映射
获取所有名称:

var names = data.participants.map(function(item) {
     return item.summonerName;    
});
您不需要
jquery
来实现这一点

JSON

var json = yourJSON;
JavaScript

var lenght = json.participants.length;
var summonerName = "";
for (i = 0; i < lenght ; i++){
  summonerName += json.participants[i].summonerName.toString() + ", ";
}
document.getElementById("playerNames").innerText = summonerName;
var lenght=json.participants.length;
var-name=“”;
对于(i=0;i
HTML

<span id="playerNames"></span>

resp参数是由返回的Json创建的JavaScript对象。callerName是每个参与者的属性,参与者是一个对象数组。因此,您需要迭代参与者数组并获取每个参与者的名称。请尝试类似的方法

  success: function (resp) {
    var participants = resp.participants,
        names = "",
        spanElement = document.getElementById("playerNames");

     participants.forEach(function(part){
       names = names + part.summonerName + " ";
     }

     spanElement.innerText = names ;
  }

resp.participants.calleername
将完成此任务,您应该能够了解如何访问REST。忽略您的数据是json的事实。一旦您解码json,它是一个javascript对象/数组结构,您可以像访问任何其他对象/数组一样访问其中的内容。我已经尝试过了,控制台显示:No'access Control Allow Orig请求的资源上存在in头。因此不允许访问源代码'null'。返回的数据来自API,我可以确认API正在工作,因为它在上述函数中使用ID之前发送了一个查找ID的请求。(如果有意义的话)。PS-我在“Get”中更改为jsonparea,现在我得到了:Uncaught SyntaxError:意外标记:我认为您需要在API的配置中启用CORS。请看另一个问题。@apsillers解释了如何使其工作,我仍然不明白为什么我能够访问函数A中的数据,但无法访问函数B中的数据?这是相同的web API,但函数B使用ID pas从函数A中使用它,这会有所不同吗?嘿,这不会只是在控制台中显示而不是在网页上显示吗?谢谢!)另外,访问控制不允许使用源代码XXXXXXXX允许使用源代码这看起来不相关。您是否向另一个url发出请求?我假设该请求是向外部url发出的,因为我使用的是API?我不明白为什么会有不同,因为该函数使用的数据也是从同一网站API生成的。(例如,名称到ID api请求有效,但当前游戏api的ID给出了此错误)。谢谢!!:)我一直获取源代码XXXXXX不被访问控制允许源代码我一直接收;我一直获取源代码XXXXXX不被访问控制允许源代码允许,无论我尝试什么方法。看起来您尝试使用的api没有设置头访问控制允许源代码:。尝试使用类似以下url的代理:“+SockerID+”?api\u key=”+APIKEY