2013-05-03 13 views
8

Ho un oggetto JSON codificato che memorizza una serie di oggetti che desidero scorrere per poterli inserire in un database. L'oggetto risultato è simile a quanto segue:Accesso agli oggetti all'interno della matrice all'interno dell'oggetto JSON utilizzando 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" 
      } 
     } 
    ] 
} 

mi piacerebbe essere in grado di inserire ogni campo nel database, ma il codice che ho ingressi undefined nel database per tutto. Qual è il modo corretto per accedere alle variabili memorizzate in ogni campo all'interno della matrice?

Ecco quello che sto utilizzando finora che non funziona:

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); 
     } 
     } 
    }); 

L'avviso risponde con una serie di [object Object] s.

+0

Usa 'console.log' invece di avviso (e controllare la console browser Il risultato). 'Result.customers' è una matrice di oggetti, ecco perché l'avviso mostra ciò che stai vedendo. – bfavaretto

+1

Dai dati di esempio sopra, sembra che il nome del cliente, ad esempio, sarebbe stato accessibile utilizzando: 'Result.customers [i] .customer.customerName'. Il tuo codice utilizza solo 'Result.customers [i] .customerName'. Il nome della variabile temporanea 'cliente' nasconde questa sottigliezza. –

+0

@JimCote, la tua risposta non è una "risposta", quindi non riesco a urlare, ma dopo tre giorni di colpire il mio cranio, il tuo commento mi ha salvato! – BillyNair

risposta

7

Change

var customer = Result.customers[i]; 

a

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

Yay grazie. Funziona! =) – EzAnalyst

1

È possibile gestire l'oggetto JSON come:

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