2011-10-30 38 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