繁体   English   中英

Jquery迭代抛出json

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM