2012-10-22 14 views
7

Possible Duplicate:
jquery reading nested jsonlettura nidificato JSON tramite la tecnologia AJAX con jQuery o JavaScript e l'output di tabelle

mi piacerebbe davvero avere un metodo duro e veloce per eseguire il ciclo più record in JSON, ognuno con potenzialmente profondo nidificazione. Voglio semplicemente l'output su un tavolo.

Non sono sicuro di quali argomenti devono essere passati tramite la funzione() per $ .each() o per la metodologia javascript di $ .ajax(). Tutti gli esempi sembrano usare le parole generiche "dati" o "obj", ma quelli che mi confondono - sono hanno costruito-in argomenti funzionali o è possibile quello che voglio come ho un nome:

$.each(foo, function(bar){ 

}); 

e come posso tenere traccia di dove sono nel ciclo/nido?

Preferirei usare JQuery, ma dovrei anche conoscere il metodo JavaScript diretto per farlo. E mi piacerebbe anche sapere se è possibile senza cento linee di codice.

Con questo JSON come un esempio:

{ 
    date: " 2012-10-18 16:58:35.104576", 
    data: [{ 
    title: "The Princess Bride", 
    rating: "PG", 
    length: 128, 
    stars: [ 
     "Gary Elwes", 
     "Robin Wright", 
     "Christopher Guest" 
    ] 

    }, { 
    title: "This is Spinal Tap", 
    rating: "R", 
    length: 105, 
    stars: [ 
     "Christopher Guest", 
     "Michael McKean", 
     "Harry Shearer" 
    ] 
    }] 
} 

non riesco a trovare nessuna esempi utili che includono nidificate JSON, anche qui in StackOverflow.

qual è il modo più efficiente di scorrere e assegnare ciascun elemento a una cella di tabella? L'output HTML non è importante - So come creare un tavolo ... Come ottengo le "stelle"?

Quando uso la console Chrome e semplicemente $.getJSON('/example'); ottengo l'intero JSON restituito nella responseText, a partire da "{"date":"2012-10-18 ,"data": [{"title": "The Princess Bride", Tuttavia nelle né i documenti JSON, la documentazione JQuery su $ GetJSON, né in alcun esempi JavaScript posso trovare un riferimento a responseText. Quindi, sono perso. Quale argomento $ .getJSON ha bisogno di oggettificare il responseText?

+0

Per quanto riguarda il tuo ultimo commento, ti consigliamo di analizzarlo. Prova 'var myData = JSON.parse (responseText);' Potrebbe essere utile inviarlo anche alla console: 'console.log (myData)' Quindi puoi fare qualcosa come 'var someStars = myData.data [0 ] .stars; ' Fammi sapere se hai domande sul collegamento dei dati. – IanW

risposta

8

provare

obj.data[0].stars  // Will get you the stars in the 1st Object 

obj.data[0].stars[0] // Gary Elwes 

FIDDLE

per scorrere attraverso le Stelle oggetto Si può provare questo

$.each(obj.data , function(key , value){ // First Level 
    $.each(value.stars , function(k , v){ // The contents inside stars 
     console.log(v) 
    });   

}); 

UPDATED FIDDLE

EDIT

$.ajax({ 
     // Parameters 

     success : function(obj){ 
      $.each(obj.data , function(key , value){ // First Level 
       $.each(value.stars , function(k , v){ // The contents inside stars 
        console.log(v) 
       });  
      }); 
     } 
    }); 
+0

Cosa succede se il JSON sta arrivando tramite AJAX? Come posso assegnare var obj tramite AJAX? – Smittles

+1

Controllare a cura post .. È oggetto verrà nella richiamata della richiesta Ajax –

+0

Quando faccio: ' $ .ajax ({ \t url: '/ example', \t dataType: 'json', \t successo : function (obj) { \t \t $ .each (obj.i dati, la funzione (key, value) { \t \t $ .Ogni (value.stars, la funzione (k, v) { \t \t avviso (v); \t \t}); \t \t}); \t} }); ' Ottiene' Uncaught TypeError: Impossibile leggere la proprietà 'length' di undefined' Vorrei poter capire come eseguire il debug di questo, ma cosa sto facendo di sbagliato? – Smittles

Problemi correlati