2013-03-02 143 views
0

在PHP我有这样的事情:PHP,JS创建JSON数据

$i=1; 
foreach ($result as $row){ 
    $outp['fields'][$i]['id']=$row['id']; 
    $outp['fields'][$i]['x']=$row['x']; 
    $outp['fields'][$i]['y']=$row['y']; 
    $outp['fields'][$i]['type']=$row['type']; 
    $i++; 
} 
echo json_encode($outp) 

而在JS:

success: function(data) { 
    var map = eval('(data)'); 
} 

这里是JSON输出:

{"fields": 
    {"1":{"id":9521,"x":21,"y":96,"type":2}, 
     "2":{"id":9522,"x":22,"y":96,"type":3}, 
     "3":{"id":9523,"x":23,"y":96,"type":1}, 
     "4":{"id":9930,"x":30,"y":100,"type":3} 
    } 
} 

我想为每个字段编写html代码(在这种情况下是4个字段)。 我该怎么办?这可能将var地图转换为数组?

感谢

回答

0

试试这个:

for(var i=1;i<=Object.keys(map["fields"]).length;i++){ 
    console.log(map["fields"][i]["id"]); //id 
    console.log(map["fields"][i]["x"]); //x 
    console.log(map["fields"][i]["y"]); //y 
} 
+0

优秀!但如果我想写这样的内部循环像这样 $(“#map”)。append(“

”);它只追加3个字段(循环变为50x),哪里会出问题? – dontHaveName 2013-03-02 10:58:41

+0

你的意思是地图[“字段”中有50个元素?另外,我忘了在for循环中写<=并更新我的解决方案。 – haitaka 2013-03-02 11:05:00

+0

是的,有50个元素,但其写作只有3 :( – dontHaveName 2013-03-02 11:07:41