2009-08-05 8 views
6

JSONデータを扱う最初の掘り下げ方。私はjQueryを使用して少し経験があります。jQuery - JSONデータを解析する - 変数名に問題がある

私はこのURL(tumblrのAPI)に掲載しています:jyoseph.com/api/read/json

私は何をしようとしているが、出力が返されるJSONです。私がこれまで持っているもの: - それらにハイフンを、それが問題を引き起こしているようだ「」tumblrのは、持っているからhttp://jsbin.com/utaju/edit

キーの一部を:

$(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>'); 
     }); 

    }); 

}); 

は、スクリプト全体のための私のjsbinの記事を参照してください。 "photo-url-500"や別の "写真キャプション"がスクリプトの中断を引き起こしているのを見れば、それはNaNを出力しています。

キー名にハイフンを付けることに問題がありますか?それとも私はこれについて間違っているのだろうか?

答えて

19

名前にダッシュがある場合は、それらに別々にアクセスする必要があります。 var photo500 = this.photo-url-500;var photo500 = this["photo-url-500"];と読み替えてください。

+1

完璧に動作します、ありがとうございます! – jyoseph

1

は、メンバーにアクセスするbracket notationを使用します。

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

リンクをありがとう、非常に役立つ、それを今見てください。 – jyoseph

2

それは各反復内で追加することが最善ではありませんのでご注意ください。文字列に追加したり、配列にプッシュしたり、イテレータの終了後に一度追加したりする方が良いでしょう。ドンへの追加は高価です。

+0

だから私は各繰り返しで文字列を構築し、最後の文字列を出力する必要がありますか?それは忠実なアドバイスですが、私はそれについて考えませんでした。ありがとう! – jyoseph

関連する問題