2011-07-12 3 views
0

私はjQueryを通していくつかのJSONで作業していますが、正しく行っていると思っていましたが、未定義のままです。JSONオブジェクトアクセサーが返されていません

私のJSONがそうのように構成されている場合:

{ "item1" : "answer", 
    "name" : "something", 
    "title" : "your title", 
    "favorites" : [ { 
     "color" : "blue", 
     "season" : "winter", 
     "sport" : "baseball" 
     }, 
     { ... more favorite objects ... }] 
} 

その後、私は

$.getJSON(urlOfMyJSON, null, function(json){ 
    $("p").append(json.item1); // returns 'answer' 
    $("h3").append(json.favorites); // returns undefined 
    $("h4").append(json.favorites[0].color); // thought this should work; throws an error because undefined has no "color". 
}); 

でそれを呼び出す誰もが正しい方向に私を指すしてくださいことはできますか?私は何をしたいのか分かっています。私は何が欠けているのかよく分かりません。

ありがとうございました!

+0

jsonをconsole.logにスローし、何が出てくるかを見てください。 – cwallenpoole

+2

あなたが持っているJSONリファレンスに間違っているようには見えないので、あなたが見ている実際のJSONか、あなたのHTMLに関係するもの(表示していないもの)のいずれかでなければなりません。私もあなたが文字列の配列で追加を呼び出すことができることを見ていないよ。 – jfriend00

答えて

1

あなたのJSONまたは得られる非直列化されたオブジェクトのプロパティにアクセスするコードに問題はありません。 Live example.ただし、この行:

$("h3").append(json.favorites); 

意味がありません。

[ 
    { 
     "color" : "blue", 
     "season" : "winter", 
     "sport" : "baseball" 
    } 
] 

を...と、ページ上h3のすべての要素に追加します:あなたは、この配列を取るためのjQueryを求めています。 jQueryはDOM要素またはjQueryインスタンスではないため、toStringを使用します。toStringはおそらく[object Object]またはそれに類するものになります。

上記のライブリンクが示すとおり、次の行、$("h4").append(json.favorites[0].color);は正常に動作します。更新するためにページにh4の要素がある場合に限り!

1

は、問題を見るためにそれを行う:

$.getJSON(urlOfMyJSON, null, function(json){ 
    alert(json.toSource()); 
}); 
関連する問題