jQuery .get.done, выбрасывая TypeError (неопределенное свойство) при вызове Steam API - PullRequest
0 голосов
/ 20 апреля 2020

В настоящее время я пытаюсь научить себя JavaScript, в основном путем документации и проб и ошибок. Я изо всех сил пытаюсь выяснить, почему этот короткий фрагмент кода всегда терпит неудачу при чтении свойства ответа (здесь значение key опущено):

$J.get("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=[key]&steamids=" + g_rgProfileData["steamid"]).done(function(res) {
    console.log(new Date(res["responseJSON"]["response"]["players"][0]["timecreated"] * 1000).toISOString().substring(0, 10));
});

Сообщение об ошибке всегда Uncaught TypeError: Cannot read property 'response' of undefined.

Предполагается использовать веб-API Steam для получения информации об игроке, а затем отформатировать свойство timecreated (сохраненное как Unix время) в аккуратную строку ISO 8601. Правильный вызов API возвращает это свойство responseJSON:

{
  "response": {
    "players": [
      {
        "steamid": "76561198116637933",
        "communityvisibilitystate": 3,
        "profilestate": 1,
        "personaname": "GrunzJr",
        "commentpermission": 1,
        "profileurl": "https://steamcommunity.com/id/GrunzJr/",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/be/be2bd53ce0c7f024a30dbde1f46cbb441584dadb.jpg",
        "avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/be/be2bd53ce0c7f024a30dbde1f46cbb441584dadb_medium.jpg",
        "avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/be/be2bd53ce0c7f024a30dbde1f46cbb441584dadb_full.jpg",
        "lastlogoff": 1587338437,
        "personastate": 1,
        "realname": "Near",
        "primaryclanid": "103582791433918461",
        "timecreated": 1385903721,
        "personastateflags": 0,
        "loccountrycode": "DE",
        "locstatecode": "01",
        "loccityid": 13305
      }
    ]
  }
}

Я пытался отложить вторую строку с помощью window.setTimeout, и это действительно решает проблему, но, похоже, это очень плохой обходной путь, и я чувствую, что упускаю что-то очевидное здесь. Любая помощь по этой проблеме высоко ценится!

Первый пост здесь, я надеюсь, что я сделал это правильно, но отзывы для улучшения приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...