Как перебрать эти данные JSON, используя Jquery для отображения балльной оценки? - PullRequest
5 голосов
/ 29 июня 2011

Данные API JSON:

{"status":200,"users":[{"twitter_screen_name":"mikerbrt","influencers":
[{"twitter_screen_name":"techcrunch","kscore":85.17},    
{"twitter_screen_name":"tinucherian","kscore":61.5},
{"twitter_screen_name":"scobleizer","kscore":84.08},
{"twitter_screen_name":"startwerk","kscore":42.12},
{"twitter_screen_name":"mikeschwede","kscore":61.89}]}]}

Сценарий:

$( "#getTweets" ).bind( "click", function() {
    var twitterUsername = $( "#twitterUsername" ).val();   
     var url = "http://api.klout.com/1/soi/influenced_by.json?key=7zcwhzhdp4w45q9fdqw9gqsc" + "&users=" +  twitterUsername + "&callback=?";
    $.getJSON( url, function( data ) {
             for(var i=0; i < data.influencers.length; i++) {
  alert(data.influencers[i].kscore);
      } 
           });
});

Данные HTML:

<div id="input">
    <span>Enter Twitter Username</span>
    <input id="twitterUsername" type="text" />
    <button id="getTweets">Get Tweets</button>
</div>
<ul></ul>

Требуемый вывод: необходимо отобразить показатель влияния влиятельных лиц

Ответы [ 3 ]

3 голосов
/ 29 июня 2011

хорошо, я не уверен, будет ли свойство «Пользователи» рассматриваться как массив, или как одиночный экземпляр, или как пользователи, но это будет либо:

for(var i=0; i < data.users[0].influencers.length; i++) {
  alert(data.users[0].influencers[i].kscore);
} 

или

for(var i=0; i < data.users.influencers.length; i++) {
  alert(data.users.influencers[i].kscore);
} 

в зависимости от того, как воспринимаются «пользователи» НТН. Dave

2 голосов
/ 29 июня 2011

Вы не выбираете users в data.users.influencers:

$.getJSON( url, function( data ) {
  $.each(data.users,function(u,users){
     $.each(users.influencers,function(i,user){
      alert(user.kscore);
     });
  });     
}
0 голосов
/ 29 июня 2011

, поскольку вы получаете только ОДИН пользовательские данные, вы можете сделать это:

ДЕМО ЗДЕСЬ

<div id="input">
    <span>Enter Twitter Username</span>
    <input id="twitterUsername" type="text" />
    <button id="getTweets">Get Tweets</button>
</div>
<ul id="klout"></ul>

$( "#getTweets" ).bind( "click", function() {
    var twitterUsername = $( "#twitterUsername" ).val();   
     var url = "http://api.klout.com/1/soi/influenced_by.json?key=7zcwhzhdp4w45q9fdqw9gqsc" + "&users=" +  twitterUsername + "&callback=?";
    $.getJSON( url, function( data ) {
        $.each(data.users[0].influencers,function(j, influenser) { // array
  $("#klout").append('<li>'+influenser.twitter_screen_name+':'+influenser.kscore+'</li>');
       });
    });
});
...