2012-04-05 30 views
-1

eSo Ich habe einige geparste PHP-Daten, die ich aus meiner Datenbank geholt und dann mit Json_encode() zu JSON geparst habe. Dann habe ich JSONparse() verwendet, um Objekte meines Arrays zu erstellen. Mein Code sieht wie folgt aus:Zugriff auf JSON-Array-Werte?

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

ich mit dem Array parsedData links bin, die wie folgt aussieht:

[ 

{"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"]}} 

] 

ich diese Arrays in einem Array platziert haben genannt

var peopleArray= { people: [ parsedData ] }; 

So weit so gut. Jetzt möchte ich auf bestimmte Personen zugreifen können. Wie Namen oder Alter. Wie ziele ich auf diese Attribute? Ich habe versucht, diese Attribute ohne Glück zu drucken. Ich habe versucht:

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

Whiched kehrt:

Uncaught TypeError: Cannot read property 'name' of undefined 

Wie kann ich diese Attribute zugreifen?

+3

Sieht aus wie Sie einen Tipp 'Namn' haben? – PseudoNinja

+0

FYI, 'PeopleArray' ist kein Array, es ist ein Objekt. – bfavaretto

+0

der Typ war, als ich meinen variablen Namen in etwas verständlicheres umwandelte. Ich habe das jetzt überarbeitet. bfvaretto: Ist das ein großes Problem für mich? Wie kann ich auf Namen für Personen zugreifen? Oder wenn das nicht möglich ist: Wie kann ich ein Array anstelle eines Objekts erstellen? ParseJSON überspringen? – nalas

Antwort

3

Neben dem Tippfehler („namn“) das Problem sind Sie in einem Array ein Array setzen:

var peopleArray = { people: [ parsedData ] }; 

Da parsedData ist ein Array dann, was Sie mit ist wie diese eine Struktur am Ende :

Sehen Sie das Problem? Seit parsedData ist ein bereits ein Array der richtige Code wäre:

var peopleArray = { people: parsedData }; 
+0

Ich verstehe. Ich habe versucht, Ihren Vorschlag zu verwenden: var peopleArray = {people: parsedData}; Aber es macht keinen Unterschied - ich kann immer noch nicht auf meine Namen zugreifen mit: peopleArray.people [0] .person1.name Ist immer noch undefined – nalas

+0

Was ist der Wert von 'peopleArray.people'? Was ist der Wert von 'peopleArray.people [0]'? Was ist mit 'peopleArray.people [0] .person1'? –

+0

'peopleArray.people [0]' gibt mir '[object Object]'. – nalas