[英]Jquery iterate throw json
我从服务器得到以下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个循环中打印值。
那么,你的数据是双重封闭在数组结构中。 这将要求您使用data[0][i].left.p1.x
来迭代它(或更聪明的东西 - 很难说没有关于什么是序列化以及如何更多的信息)。
对于更新的问题,您需要一个嵌套循环来循环外循环和内循环。
$.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);
同样的事情,但更短一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.