2011-11-18 76 views
1

我要去堅果試圖解析從這個JSON獲得「名」,每個「部門」的「id」屬性爲選擇:如何訪問這些屬性?

[{"division":{"name":"Solo Male","coed":false,"size":1,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":1}},{"division":{"name":"Solo Female","coed":false,"size":1,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":2}},{"division":{"name":"4 Person Male","coed":false,"size":4,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":9}},{"division":{"name":"4 Person Female","coed":false,"size":4,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":10}},{"division":{"name":"4 Person Coed","coed":true,"size":4,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-10-29T10:46:28-04:00","id":11}},{"division":{"name":"3 Person Male","coed":false,"size":3,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":6}},{"division":{"name":"3 Person Female","coed":false,"size":3,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":7}},{"division":{"name":"3 Person Coed","coed":true,"size":3,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-10-29T10:46:22-04:00","id":8}},{"division":{"name":"2 Person Male","coed":false,"size":2,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":3}},{"division":{"name":"2 Person Female","coed":false,"size":2,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-08-25T16:42:07-04:00","id":4}},{"division":{"name":"2 Person Coed","coed":true,"size":2,"created_at":"2009-08-25T16:42:07-04:00","updated_at":"2009-10-29T10:46:16-04:00","id":5}}] 

這裏是我的代碼,我不能去上班:

jQuery.each(data, function(i,division) { 
$('#squad_division').append($('<option value="'+ division.id+'">'+ division.name +'</option>')); 

我知道,我只是簡單的東西在那裏我試圖訪問「division.id」和「division.name」,但它躲開我。

感謝提前,如果你可以提供幫助。

乾杯

回答

1

因爲你需要改變division.iddivision.division.id的JSON的結構。這裏是您的幾乎完全相同的代碼正常一個的jsfiddle:http://jsfiddle.net/RqwBT/1/

基本上您division變量是陣列(該data變量),這是一個對象內的單個鍵,且該對象具有一個屬性:division(其中有你想訪問的子屬性)。

jQuery.each(data, function(i,division) { 
    $('#squad_division').append('<option value="'+ division.division.id+'">'+ division.division.name +'</option>'); 
}); 

通知我刪除周圍的HTML的$()在追加聲明,因爲它是建立不必要的開銷。

我想通過在每個函數內部調用console.log(division);來解決這個問題,它允許我一次檢查單個數組鍵,以瞭解如何訪問對象的信息。這是我從新源加載JSON時的標準做法。

+0

EUREKA!我告訴你這是愚蠢的東西:-) –

+0

我會了解的jsfiddle今天!再次感謝。 –

+0

我很樂意提供幫助。如果你不熟悉如Firebug DOM檢查工具,那麼我建議你花一點時間去了解一個,它可以節省大量的時間調試代碼海量。 – Jasper

1

啊哈......你的界線並不師數據尚未...他們仍然(含一個部門)的數組。

您將需要:

jQuery.each(data, function(i,data_item) { 
    $('#squad_division').append($('<option value="'+ data_item.division.id+'">'+ data_item.division.name +'</option>')); 
+0

沒有骰子。當我使用division.id和division.name我正在加入到選擇欄選項標籤如預期......我只是不明白的屬性值。相反,我得到這個: <期權價值=「未定義」>未定義 –

+0

看到編輯答案:) –

1

在你的代碼division(第一個,data[0])是下列對象:

{ 
    "division": { 
    "name":"Solo Male", 
    "coed":false, 
    "size":1, 
    "created_at":"2009-08-25T16:42:07-04:00", 
    "updated_at":"2009-08-25T16:42:07-04:00", 
    "id":1 
    } 
} 

所以你需要使用division.division.iddivision.division.name