2010-06-17 2 views
0

Я использую PHP для возврата массива json_encode() 'd для использования в моем Javascript-коде. Он возвращается как:Как я могу получить доступ к этому вложенному массиву в моем объекте JSON?

{"parent1[]":["child1","child2","child2"],"parent2[]":["child1"]} 

Используя следующий код, я могу получить доступ к parent2 > child1

$.getJSON('myfile.php', function(data) 
{ 
    for (var key in data) 
    { 
     alert(data[key]); 
    } 
} 

Однако это не дает мне доступ к child1, child2, child, из parent1. Предупреждение ключа само по себе показывает «parent1», но когда я пытаюсь оповестить его о содержимом, я получаю undefined.

Я полагал, что это даст мне объект/массив? Как получить доступ к дочерним элементам parent1?

данные [ключ] [0]?

ответ

1

JSON должны быть возвращены:

{"parent1":["child1","child2","child2"],"parent2":["child1"]} 

, то вы можете получить доступ к ним, как:

var data = {"parent1":["child1","child2","child2"],"parent2":["child1"]} 
alert(data['parent1'][0]); 
alert(data['parent1'][1]); 
alert(data['parent1'][2]); 
+0

Если мои глаза не обманывают меня, единственное отличие в том, что вы переименовали parent1 [] в parent1 и parent2 [] в parent2. Как это исправить код? :/«Родители» - это имена входов в моей HTML-форме. Входы представляют собой массивы и, следовательно, названы с помощью []. – dave

+0

ОК, поэтому вам не нужно переименовывать, как я. Но вы все равно можете получить к ним доступ: для (var i = 0; i

0

вы можете назначить его в переменной следующим образом:

Var = данные [ключ ];

, а затем получить содержимое массива, используя размер массива.

Надеюсь, что это поможет.

1

Вы только итерируете один уровень в объект, поэтому правильно, что вы видите только родителей. Вам нужно спуститься в эти ключи, чтобы найти детей.

// Generally, avoid the "foreach" form in JavaScript. 
for (var i = 0; i < data.length; i++) { 
    alert(data[i]); // Parent1[], Parent2[], etc 

    var parent = data[i]; 

    for (var j = 0; j < parent.length; j++) { 
    alert(parent[j]); // Child1, Child2, etc 
    } 
} 

Кроме того, суффикс [] на родительских клавишах в порядке. Это is действительный JSON.

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