Как я могу получить доступ к этому вложенному массиву в моем объекте JSON? - PullRequest
0 голосов
/ 17 июня 2010

Я использую PHP для возврата массива json_encode () для использования в моем коде Javascript.Возвращается как:

{"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», но когда я пытаюсь предупредить его содержимое, я получаю неопределенное значение.

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

data [key] [0]?

Ответы [ 3 ]

1 голос
/ 17 июня 2010

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

// 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
  }
}

Кроме суффикса [] на родительских ключах все в порядке.Это это действительный JSON.

1 голос
/ 17 июня 2010

Возвращаемый 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 голосов
/ 17 июня 2010

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

var = data [key];

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...