2009-08-05 11 views
6

Mon premier travail sur les données JSON. J'ai un peu d'expérience en utilisant jQuery cependant.jQuery - analyse des données JSON - Problème avec le nom de la variable

Je poste à cette URL (api tumblr): jyoseph.com/api/read/json

Ce que je suis en train de faire est sortie JSON qui est renvoyée. Ce que j'ai jusqu'à présent:

$(document).ready(function(){ 

$.getJSON("http://jyoseph.com/api/read/json?callback=?", 
    function(data) { 
    //console.log(data); 
    console.log(data.posts);   

     $.each(data.posts, function(i,posts){ 
     var id = this.id; 
     var type = this.type; 
     var date = this.date; 
     var url = this.url; 
     var photo500 = this.photo-url-500; 

     $('ul').append('<li> ' +id+ ' - ' +type+ ' - ' +date+ ' - ' +url+ ' - ' +photo500+ ' - ' + ' </li>'); 
     }); 

    }); 

}); 

Voir mon post jsbin pour le script entier: http://jsbin.com/utaju/edit

Certaines des touches de tumblr ont « - » traits d'union en eux, et qui semblent être à l'origine d'un problème. Comme vous pouvez le voir "photo-url-500" ou une autre "photo-légende" provoque la casse du script, il sort NaN.

Y at-il un problème avec les traits d'union dans les noms de touches? Ou je vais à ce sujet tout faux?

Répondre

19

S'il y a des tirets dans les noms, vous devrez y accéder différemment. Changez var photo500 = this.photo-url-500; pour lire var photo500 = this["photo-url-500"];.

+1

Fonctionne parfaitement, merci beaucoup! – jyoseph

1

Utilisez le bracket notation pour accéder aux membres:

var photo500 = this['photo-url-500']; 
+0

Merci pour le lien, très utile, en regardant par-dessus maintenant. – jyoseph

2

S'il vous plaît noter qu'il est préférable de ne pas ajouter à l'intérieur de chaque itération. Mieux vaut ajouter à une chaîne ou pousser à un tableau puis ajouter une fois que l'itérateur a fini. L'ajout au dom est cher.

+0

Donc, je devrais construire une chaîne à chaque itération et ensuite sortir la chaîne finale? C'est un conseil solide, je n'y ai pas pensé. Merci! – jyoseph

Questions connexes