Ваша проблема в том, что вы пытаетесь получить доступ к 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);
});
});