2013-05-03 21 views
8

Ich habe ein codiertes JSON-Objekt, das ein Array von Objekten speichert, die ich durchlaufen möchte, um in eine Datenbank einzugeben. Das Ergebnis Objekt ist ähnlich wie folgt:Zugriff auf Objekte innerhalb von Array innerhalb des JSON-Objekts mit Javascript

{ 
    "customers": [ 
     { 
      "customer": { 
       "id":"1", 
       "customerName":"Customer Alpha", 
       "customerID":" custA", 
       "customerAddress":" Alpha Way", 
       "customerCity":" Alpha", 
       "customerState":" AL", 
       "customerZip":"91605" 
      } 
     }, 
     { 
      "customer": { 
       "id":"2", 
       "customerName":"Customer Beta", 
       "customerID":" CustB", 
       "customerAddress":" Beta Street", 
       "customerCity":" Beta", 
       "customerState":" BE", 
       "customerZip":"91605" 
      } 
     } 
    ] 
} 

ich in der Lage jedes Feld in die Datenbank eingegeben werden mag, aber der Code Ich habe Eingaben in die Datenbank für alles, was nicht definiert. Was ist der richtige Weg, um auf die Variablen zuzugreifen, die in jedem Feld innerhalb des Arrays gespeichert sind?

Hier ist, was ich bin mit so weit, die nicht funktioniert:

function insertCustomer(customerName, customerID, customerAddress, customerCity, customerState, customerZip) { 
db.transaction(function (tx) { 
    tx.executeSql('INSERT INTO Customers (customerName, customerID, customerAddress, customerCity, customerState, customerZip) VALUES (?, ?, ?, ?, ?, ?)', [customerName, customerID, customerAddress, customerCity, customerState, customerZip], CountReturns); 
    }); 
}; 

     $.ajax({ 
     url  : 'http://webserver/retrieveDatabase.php', 
     dataType : 'json', 
     type  : 'get', 
     success : function(Result){ 
     alert(Result.customers); 
     for (var i = 0, len = Result.customers.length; i < len; ++i) { 
      var customer = Result.customers[i]; 
      insertCustomer(customer.customerName, customer.customerID, customer.customerAddress, customer.customerCity, customer.customerState, customer.customerZip); 
     } 
     } 
    }); 

Die Warnung reagiert mit einer Reihe von [object Object] s.

+0

Verwenden 'console.log' statt alert (und überprüfen Sie Ihre Browserkonsole die Ausgabe). 'Result.customers' ist ein Array von Objekten. Aus diesem Grund zeigt Alert an, was Sie gerade sehen. – bfavaretto

+1

Aus den obigen Beispieldaten sieht es so aus, als würde der Kundenname zum Beispiel unter Verwendung von 'Result.customers [i] .customer.customerName' aufgerufen. Ihr Code verwendet nur 'Result.customers [i] .customerName'. Der Name der temporären Variable 'Kunde' verbirgt diese Subtilität. –

+0

@JimCote, deine Antwort ist keine "Antwort", also kann ich es nicht angehen, aber nach drei Tagen, in denen du meinen Schädel eingeschlagen hast, hat dein Kommentar mich gerettet! – BillyNair

Antwort

7

ändern

var customer = Result.customers[i]; 

zu

var customer = Result.customers[i].customer; 
+0

Yay danke. Es klappt! =) – EzAnalyst

1

können Sie die JSON-Objekt wie handhaben:

for(var key in Result["customers"]) { 
    // examples 
    console.log(Result[key].customer); 
    console.log(Result[key]["customer"]); 
    console.log(Result[key]["customer"].customerID); 
} 
Verwandte Themen