2011-11-18 80 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