2011-10-30 37 views
0

我想基于id的获取twitter用户名的列表,但我无法让jquery解析到由twitter api返回的json数据。而不是显示我得到的名称:[object Object]。我检查了结果,它似乎是有效的json数据。我需要帮助了解如何使用这些数据。无法解析来自twitter api的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'); 
}); 

回答

0

我敢肯定你需要使用JSONP而不是JSON。通常你不能跨域Ajax调用,这可能是失败的。这是一个很好的article on the subject

IIRC您可以简单地将&callback=?添加到您的GET请求。这将使你的要求$.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715&callback=?',...

jQuery将取代?与动态功能来处理数据,它应该工作更好地为您

+0

谢谢,我会看看那篇文章。 – DLL

+0

我刚刚也发现了它,如果它有帮助:http://jquery-howto.blogspot.com/2009/04/twitter-jsonjsonp-api-url.html –

0

添加&callback=?到url检索数据

$.getJSON('https://api.twitter.com/1/users/lookup.json?user_id=16917715&callback=?', function(data) { 
    console.log(data); 
}); 
0

我没有使用这个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){ 
    ... 
    }); 
} 
+0

查看你的代码后,我不确定究竟是什么你正在努力去做。起初,它看起来像你试图迭代数组的属性,并列出每个属性,但从你的描述看来,你似乎只是试图从Twitter的用户名列表。如果是这样的话,你不需要$ .each,你只需要访问返回的用户数组中的每个对象的名称和id属性。 – Brian

+0

谢谢,这回答了我的问题。我现在只需要用户名,但我也想了解如何获取所有属性。我不明白为什么JSON数据不工作,但这是因为它是一个数组而不是一个对象。 – DLL

+0

不是一个标尺,但是如果我的答案对您有帮助,您是否可以通过单击我答案旁边的复选标记将其标记为正确? – Brian