2012-07-04 63 views
0

我有一个从服务器的以下JSON响应:jQuery的迭代掷JSON

$data=[[ 

    {"left":{"p1":{"x":0,"y":0},"p2":{"x":0,"y":15}}, 
    "right":{"p1":{"x":15,"y":0},"p2":{"x":15,"y":15}}, 
    "up":{"p1":{"x":0,"y":0},"p2":{"x":15,"y":0}}, 
    "bottom":{"p1":{"x":0,"y":15},"p2":{"x":15,"y":15}}}, 

    {"left":{"p1":{"x":0,"y":15},"p2":{"x":0,"y":30}}, 
    "right":{"p1":{"x":15,"y":15},"p2":{"x":15,"y":30}}, 
    "up":{"p1":{"x":0,"y":15},"p2":{"x":15,"y":15}}, 
    "bottom":{"p1":{"x":0,"y":30},"p2":{"x":15,"y":30}}} 

    ], 
[ 

{"left":{"p1":{"x":0,"y":0},"p2":{"x":0,"y":15}}, 
"right":{"p1":{"x":15,"y":0},"p2":{"x":15,"y":15}}, 
"up":{"p1":{"x":0,"y":0},"p2":{"x":15,"y":0}}, 
"bottom":{"p1":{"x":0,"y":15},"p2":{"x":15,"y":15}}}, 

{"left":{"p1":{"x":0,"y":15},"p2":{"x":0,"y":30}}, 
"right":{"p1":{"x":15,"y":15},"p2":{"x":15,"y":30}}, 
"up":{"p1":{"x":0,"y":15},"p2":{"x":15,"y":15}}, 
"bottom":{"p1":{"x":0,"y":30},"p2":{"x":15,"y":30}}} 

] 
] 

我想留在P1点的每x提醒。

$.getJSON("jetData", 
      function(data) { 
     $.each(data, function(i,item){ 
      alert(data[i].left.p1.x); 

     }); 
     }); 

我越来越

Uncaught TypeError: Cannot read property 'p1' of undefined 

如何做正确吗?

更新:

对不起,我错贴例如它只是我花了一些时间来认识到,我们正在谈论的2x2矩阵。所以我需要在2个循环中打印值。

回答

1

对于您更新的问题,您需要一个嵌套循环来循环外部循环和内部循环。

$.getJSON("jetData", function(data) { 
    $.each(data, function(i,item) { 
     $.each(item, function(j, inner_item) { 
      alert(inner_item.left.p1.x); 
     // alert(data[i][j].left.p1.x); // same thing 
     }); 
    }); 
}); 

你有2个外部阵列。

改变了...

$.each(data, function(i,item){ 

这个...

$.each(data[0], function(i,item){ 

...让$.each迭代是直接包含的对象数组。


没有直接关系,但是这...

alert(data[i].left.p1.x); 

可以写成这样...

alert(item.left.p1.x); 

同样的事情,但更短一点。

+0

对不起,请参阅我的更新我只是意识到这是json实现2x2 Matrix –

+0

@ danny.lesnik:那么你只需要一个嵌套循环。我会在一分钟后更新。 – 2012-07-04 23:15:01

1

那么,你的数据是双重封闭的数组结构。这将需要你使用data[0][i].left.p1.x来遍历它(或更聪明的东西 - 很难说,没有关于什么是序列化和如何更多的信息)。

+0

请看我的更新 –