2012-04-05 4 views
-1

eSo У меня есть некоторые анализируемые данные php, которые я извлек из своей базы данных, а затем разобрал JSON с помощью json_encode(). Затем я использовал JSONparse() для создания объектов моего массива. Мой код выглядит следующим образом:Доступ к значениям массива JSON?

$.get("fetchDatabase.php", function(data){
var parsedData = jQuery.parseJSON(data); }

я остался с массивом parsedData, который выглядит следующим образом:

[ 

{"person0":{"name":["Erik Steen"],"age":["1"]}}, 
{"person1":{"name":["Frida Larsson"],"age":["1"]}}, 
{"person2":{"name":["Abdi Sabrie"],"age":["2"]}}, 
{"person3":{"name":["Achraf Malak"],"age":["3"]}}, 
{"person4":{"name":["Adam Anclair"],"age":["1"]}} 

] 

Я поместил эти массивы в массиве с именем

var peopleArray= { people: [ parsedData ] }; 

Пока все хорошо. Теперь я хочу получить доступ к атрибуту определенных лиц. Как имена или возраст. Как настроить таргетинг на эти атрибуты? Я попытался напечатать эти атрибуты без везения. Я пробовал:

alert (peopleArray.people[0].person1.name); 

Whiched возвращается:

Uncaught TypeError: Cannot read property 'name' of undefined 

Как я могу получить доступ к этим атрибутам?

+3

Похоже, у вас есть опечатка "НАМН? – PseudoNinja

+0

FYI, 'peopleArray' - это не массив, это объект. – bfavaretto

+0

Тип был, когда я преобразовал свое имя переменной в нечто более понятное. Я отредактировал это сейчас. bfvaretto: Это большая проблема для меня? Как я могу получить доступ к именам для людей? Или если это невозможно: как я могу сделать его массивом вместо объекта? Пропустить parseJSON? – nalas

ответ

3

Помимо опечатка («namn») проблема вы кладете массив внутри массива:

var peopleArray = { people: [ parsedData ] }; 

Поскольку parsedData является массивом, то, что вы в конечном итоге с является структурой, как это :

// peopleArray 
{ people : [ [ { "person0" : ... }, ... ] ] } 
// oops -----^ 

Уточнить возникшую проблему? Поскольку parsedData это уже массив правильный код будет:

var peopleArray = { people: parsedData }; 
+0

Я вижу. Я попытался использовать ваше предложение: var peopleArray = {people: parsedData}; Но это не имеет никаких различий. Я все еще не могу получить доступ к своим именам, используя: peopleArray.people [0] .person1.name До сих пор не определено – nalas

+0

Какова ценность 'peopleArray.people'? Какова ценность 'peopleArray.people [0]'? Как насчет 'peopleArray.people [0] .person1'? –

+0

'peopleArray.people [0]' дает мне '[object Object]'. – nalas

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