JSON JQuery Вопрос - PullRequest
       4

JSON JQuery Вопрос

0 голосов
/ 22 ноября 2010

Итак, я пробую JSON впервые. У меня есть этот канал Twitter API, который я пытаюсь вывести. Просто любопытно, где я иду не так. Прикреплен мой код.

<!DOCTYPE html>

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.4.4.js"></script>
  </head>
  <body>
    <ol class="result"></ol>
    <script>
      $.getJSON('http://api.twitter.com/1/trends/1105779.json', function(json) {
        alert(json.trends.query[1]);
        $('.result').html('<li>' + json.trends.query + '</li>');
      });
    </script>
  </body>
</html>
<!-- http://api.twitter.com/1/trends/1105779.json -->

Ответы [ 3 ]

5 голосов
/ 22 ноября 2010

Измените URL-адрес на 'http://api.twitter.com/1/trends/1105779.json?callback=?'.

Ваш запрос должен быть обработан JSONP, чтобы обойти ограничения политики XHR.

Если URL-адрес содержит что-то похожее на callback=? jQueryделает свое волшебство, чтобы сделать запрос запросом JSONP.Подробнее об этом: http://api.jquery.com/jQuery.getJSON/

2 голосов
/ 22 ноября 2010

Ваша проблема в том, что вы пытаетесь получить доступ к query, как если бы это был массив. Это не так, это объект. trends - это фактический массив. Так что, если вы хотите свойство query второго объекта в массиве trends, что, как вам кажется, вы пытаетесь сделать, вы бы сделали это:

var query = json.trends[1].query; 

EDIT:

Если вы, как предполагает комментатор, пытаетесь получить доступ к элементу first в массиве trends, он находится по индексу массива 0. Итак:

var query = json.trends[0].query;

Ваше второе утверждение json.trends.query также недопустимо, поскольку trends является массивом, а не объектом и не имеет свойства query. Если ваша цель - получить каждое свойство query от всех объектов в массиве trends, используйте циклическую конструкцию $.each() jQuery. Вот так:

$.each(json.trends, function(i, result) {
     $('.result').append(result.query);
});

Вам также нужно добавить callback=? в конец строки запроса, которую вы передаете $.getJSON(). jQuery заменяет ? случайно сгенерированным именем функции, что позволяет jQuery вызывать функцию обратного вызова и передавать ей данные. Это реализует запрос JSONP , который не подпадает под политику одного и того же происхождения .

Собираем все вместе:

  $.getJSON('http://api.twitter.com/1/trends/1105779.json?callback=?', function(json) {
    alert(json.trends[1].query);
    $.each(json.trends, function(i, result) {
       $('.result').append(result.query);
    });
  });
0 голосов
/ 22 ноября 2010

Глядя на json, возвращенный по URL, который вы дали, вам нужно следующее:

alert(json.trends[1].query);

trends - список объектов, каждый из которых имеет ключ query.

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