2012-06-12 19 views
8

Quando un utente fa clic su un pulsante, desidero restituire alcuni dati e scorrere il JSON in modo da poter aggiungere i risultati a una riga della tabella.

A questo punto sto solo cercando di far funzionare il mio ciclo, ecco il mio codice.

mio JSON sta tornando come segue: { "colonne": [ "username", "password"], "DATA": [ "foo", "bar" []]}

$("#button").click(function(){ 

    $.ajax({ 
     url: 'http://localhost/test.php', 
     type: 'get', 
     success: function(data) { 
     $.each(data.items, function(item) { 
      console.log(item); 
      }); 
     }, 
     error: function(e) { 
      console.log(e.message); 
     } 
    }); 

}); 

Sto ottenendo un errore jQuery (riga 16, a non è definito). Che cosa sto facendo di sbagliato?

+0

Come funziona il vostro JSON assomiglia? – Shyju

+0

Cosa c'è 'a' e dov'è la riga 16? – Blender

+0

{"COLUMNS": ["username", "password"], "DATA": [["foo", "bar"]]} –

risposta

11

Assumendo che il JSON è come questo

var item= { 
     "items": [ 
        { "FirstName":"John" , "LastName":"Doe" }, 
        { "FirstName":"Anna" , "LastName":"Smith" }, 
        { "FirstName":"Peter" , "LastName":"Jones" } 
       ] 
      } 

è possibile interrogare in questo modo

$.each(item.items, function(index,item) {   
    alert(item.FirstName+" "+item.LastName) 
}); 

Esempio: http://jsfiddle.net/4HxSr/9/

EDIT: Come per il PO JSON Inviato dopo

Il tuo JSON non ha elementi, quindi non è valido.

Secondo il vostro JSON come questo

var item= { "COLUMNS": [ "username", "password" ], 
      "DATA": [ [ "foo", "bar" ] ,[ "foo2", "bar2" ]] 
      } 

Si dovrebbe interrogare come questo campione Lavorare

console.debug(item.COLUMNS[0]) 
console.debug(item.COLUMNS[1]) 

$.each(item.DATA, function(index,item) {   
    console.debug(item[0]) 
    console.debug(item[1]) 
    }); 

: http://jsfiddle.net/4HxSr/19/

+0

grazie, sembra che io sia stato abbastanza lontano dalla mia comprensione, ma questo aiuta. Stavo cercando di fare riferimento all'elemento [1] senza passare l'indice nel callback. –

+0

@JasonWells: Sei il benvenuto :) Felice di poterti aiutare. – Shyju

3

È necessario aggiungere:

dataType: 'json', 

.. così si dovrebbe avere:

$("#button").click(function(){ 

$.ajax({ 
    url: 'http://localhost/test.php', 
    type: 'get', 
    dataType: 'json', 
    success: function(data) { 
    $.each(data.COLUMNS, function(item) { 
     console.log(item); 
     }); 
    }, 
    error: function(e) { 
     console.log(e.message); 
    } 
}); 

}); 

.. oltre ad assicurare che si fa riferimento colonne nella ogni affermazione.

getJSON è anche un altro modo di farlo ..

http://api.jquery.com/jQuery.getJSON/

+0

Grazie, non ho capito che avevo bisogno del tipo di dati: json se stavo già tornando json –

+0

Non lo fai se stai usando $ .getJSON - è un wrapper per $ .ajax ({dataType: 'json'}); – Sp4cecat

Problemi correlati