2011-07-12 186 views
0

我正在通過jQuery使用一些JSON,並認爲我正確地做了這件事,但我一直未定義。JSON對象訪問器返回undefined

如果我的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相關的內容(您沒有顯示)。我也沒有看到你可以用一串字符串調用append。 – jfriend00

回答

1

沒有什麼不對您的JSON或訪問所產生的反序列化對象的屬性代碼。 Live example.但是,該行:

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

沒有多大意義。你問的jQuery藉此數組:

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

...並將它添加到您的所有網頁上h3元素。 jQuery將使用toString,因爲它不是DOM元素或jQuery實例,並且toString可能會返回[object Object]或類似。

下一行,$("h4").append(json.favorites[0].color);,應該正常工作,正如上面的實時鏈接演示。只要網頁上有h4個元素即可更新!

1

做到這一點,看問題:

$.getJSON(urlOfMyJSON, null, function(json){ 
    alert(json.toSource()); 
});