#jquery #json #twitter
#jquery #json #Twitter
Вопрос:
Я пытаюсь получить список имен пользователей Twitter на основе идентификаторов, но я не могу заставить jquery анализировать данные json, возвращаемые API twitter. Вместо отображения имен я получаю: [object Object] . Я проверил результат, и он оказался действительными данными json. Мне нужна помощь в понимании того, как использовать данные.
Вот код, который я использую:
$.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715', function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' key '">' val '</li>');
});
$('<ul/>', {
'class': 'twitter-names-list',
html: items.join('')
}).appendTo('#follower-names');
});
Ответ №1:
Я почти уверен, что вам нужно использовать JSONP вместо JSON. Как правило, вы не можете выполнять междоменные вызовы ajax, и, вероятно, это то, что здесь терпит неудачу. Вот хорошая статья на эту тему
IIRC вы можете просто добавить amp;callback=?
в свой запрос GET. Это сделало бы ваш запрос $.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715amp;callback=?',...
jQuery заменит это ?
динамической функцией для обработки данных, и она должна работать лучше для вас
Комментарии:
1. Спасибо, я посмотрю на эту статью.
2. Я тоже только что нашел это, если это поможет: jquery-howto.blogspot.com/2009/04 /…
Ответ №2:
добавьте amp;callback=?
к URL-адресу для извлечения данных
$.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715amp;callback=?', function(data) {
console.log(data);
});
Ответ №3:
Я не использовал API, но, глядя на https://dev.twitter.com/docs/api/1/get/users/lookup , оказывается, что результатом является массив объектов. Если я правильно читаю ваш код, кажется, что вы повторяете массив, а не свойства объектов в массиве. Я бы обернул ваш текущий $.each()
вызов в
for( var x = 0; x < data.length; x )
{
$.each(data[ x ], function(key, val){
...
});
}
Комментарии:
1. Посмотрев на ваш код, я не совсем уверен, что вы пытаетесь сделать. Сначала казалось, что вы пытаетесь перебрать свойства массива и перечислить каждое свойство, но из вашего описания кажется, что вы просто пытаетесь составить список имен пользователей из Twitter. Если это так, вам не нужен $.each, вам просто нужно получить доступ к свойствам name и id каждого объекта в возвращаемом массиве пользователей.
2. Спасибо, это ответило на мои вопросы. На данный момент мне нужно только имя пользователя, но я также хотел понять, как получить все свойства. Я не понял, почему данные json не работают, но это потому, что это массив, а не объект.
3. Не хочу быть приверженцем, но если мой ответ вам помог, не могли бы вы отметить его как правильный, щелкнув галочку рядом с моим ответом?