Как я могу присвоить значения словаря переменным javascript (вызов JQuery / AJAX API, возвращаемый в JSON) - PullRequest
0 голосов
/ 03 октября 2019

У меня есть хорошо работающий AJAX-запрос, который запрашивает данные из стороннего API, который возвращает данные в JSON. Теперь я хочу присвоить значения из возвращенных данных JSON переменным javascript для дальнейшей обработки самих данных в моей функции успеха AJAX перед обновлением внешнего интерфейса.

В приведенном ниже примере я хотел бы назначить значениеключа name к моей переменной Javascript team.

Каков наилучший способ сделать это?

Это возвращаемая структура:

{ 
   "api":{ 
      "results":1,
      "teams":[ 
         { 
            "team_id":66,
            "name":"Barcelona",
            "code":null,
            "logo":"Not available in Demo",
            "country":"Spain",
            "founded":1899,
            "venue_name":"Camp Nou",
            "venue_surface":"grass",
            "venue_address":"Carrer d'Ar\u00edstides Maillol",
            "venue_city":"Barcelona",
            "venue_capacity":99787
         }
      ],

Это мой запрос AJAX:

$('ul.subbar li a').on('click', function(e) {
e.preventDefault();
var team_id = $(this).attr("id");
console.log(team_id);
$.ajax({
  method: "GET",
  dataType: "json",
  url: "https://cors-anywhere.herokuapp.com/http://www.api-football.com/demo/api/v2/teams/team/" + team_id,
  success: function(response) {
    var team_data = response
    console.log(team_data)

    team = // how to assign team name from API callback to variable

    console.log(team)

    $("#selectedClub").html(response);

    }
  });
});

Ответы [ 2 ]

4 голосов
/ 03 октября 2019

Вы можете использовать точечную нотацию для навигации по объектам

team_data.api.teams[0].name //output: "barcelona"

В вашем примере внутри teams array есть только один элемент, поэтому приведенный выше пример должен работать нормально, но давайте предположим, что вваш ответ: на teams есть более 1 команды, тогда вы можете сделать что-то вроде этого:

var teamList = [];
$.each(team_data.api.teams, function(index, team){
    teamList.push(team.name);
})

, и это даст array со всеми названиями команд из вашей ajax response

1 голос
/ 03 октября 2019

поместите JSON в переменную js obj


var obj = JSON.parse('{ <key:value>,<key:value>...}');

Убедитесь, что текст написан в формате JSON, иначе вы получите синтаксическую ошибку.


Используйте объект JavaScript на своей странице: Пример


<p id="demo"></p>

<script>
document.getElementById("name").innerHTML = obj.name + ", " + obj.country;
</script> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...