2012-10-22 9 views
7

Possible Duplicate:
jquery reading nested jsonczytanie zagnieżdżone JSON za pośrednictwem AJAX z jQuery lub JavaScript i wyprowadzania do tabel

ja naprawdę chciałbym mieć twardy i szybki sposób pętli wielu rekordów w JSON, każdy z potencjalnie głębokie zagnieżdżenia. Po prostu chcę wyprowadzać do tabeli.

Nie jestem pewien, jakie argumenty należy przekazać za pośrednictwem funkcji() dla $ .each() lub dla metodologii javascript dla sukcesu $ .ajax(). Wszystkie przykłady wydają się używać słów rodzajowe „dane” lub „obj”, ale te mylić mnie - są one wbudowane w funkcjonalnych argumentów czy mogę wymienić je co chcę podoba:

$.each(foo, function(bar){ 

}); 

i jak mogę śledzić gdzie jestem w pętli/gniazdo?

Wolałbym używać JQuery, ale powinienem także znać prostą metodę JavaScript, aby to zrobić. Chciałbym też wiedzieć, czy jest to możliwe bez setki linii kodu.

Z tego JSON jako przykład:

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

nie mogę znaleźć żadnych użytecznych przykładów, które zawierają zagnieżdżone JSON, nawet tutaj w StackOverflow.

jaki jest najskuteczniejszy sposób przechodzenia i przypisywania każdego elementu do komórki tabeli? Wyjście HTML nie jest ważne - wiem, jak zrobić tabelę ... Jak uzyskać "gwiazdki"?

Kiedy użyć konsoli Chrome i po prostu $.getJSON('/example'); mam cały JSON zwrócony w responseText, począwszy "{"date":"2012-10-18 ,"data": [{"title": "The Princess Bride", Jednakże w żadnym docs JSON, JQuery docs na $ .getJSON, ani w żadnych przykładów JavaScript mogę znaleźć odniesienie do responseText. Więc jestem zagubiony. Jaki argument musi $ .getJSON zobiektywizować responseText?

+0

Odnośnie ostatniego komentarza, należy go przeanalizować. Wypróbuj 'var myData = JSON.parse (responseText);' Może ci się też przydać wypuszczenie go na konsolę: 'console.log (myData)' Następnie możesz zrobić coś takiego: 'var someStars = myData.data [0] ] .stars; ' Daj mi znać, jeśli masz jakieś pytania dotyczące zapętlenia twoich danych. – IanW

Odpowiedz

8

spróbować

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

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

FIDDLE

iteracyjne thru Gwiazdy object Możesz spróbować tego

$.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

Co jeśli JSON przychodzi za pośrednictwem AJAX? Jak mogę przypisać var ​​obj przez AJAX? – Smittles

+1

Sprawdź edytowany postu .. Ty obiekt będzie w zwrotnego z żądania Ajax –

+0

Kiedy zrobić: ' $ .ajax ({ \t url: '/ example', \t dataType: 'json', \t sukces : function (obj) { \t \t $ .each (obj.Dane, function (key, value) { \t \t $ .each (value.stars, function (k, v) { \t \t alert (v); \t \t}); \t \t}); \t} }); ' Dostaję' Uncaught TypeError: Nie mogę odczytać właściwości 'length' of undefined' Chciałbym wymyślić jak samemu to debugować, ale co robię źle? – Smittles

Powiązane problemy