2013-03-02 2 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

+0

Вы имеете в виду 50 элементов на карте ["fields"]? Кроме того, я забыл написать <= in for loop и обновил свое решение. – haitaka

+0

да есть 50 элементов, но его написание просто 3 :( – dontHaveName

Смежные вопросы