Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX, JSON] Pobieranie globalnie wartości
Forum PHP.pl > Forum > XML, AJAX > AJAX
Vercio
Witam,
Mam mały problem z ajax'em.
Mam już przychodzące dane w formacie JSON:
[JAVASCRIPT] pobierz, plaintext
  1. {
  2. "status": "ok",
  3. "count": 2,
  4. "person": [
  5. {
  6. "id": 2,
  7. "name": "Kamil",
  8. "age": 22,
  9. "description": "tresc"
  10. },
  11. {
  12. "id": 1,
  13. "name": "Marcin",
  14. "age": 25,
  15. "description": "tresc"
  16. }
  17. ]
  18. }
[JAVASCRIPT] pobierz, plaintext



I chciałem zrobić tak by w każdym div-ie pojawiał mi się kolejno:

<div>Kamil, 22 Opis: tresc</div>
<div>Marcin, 25 Opis: tresc</div>

i tak dla wszystkich rekordów w PERSON.

Mam już napisany taki kod:

  1. $.ajax({
  2. type: "GET",
  3. dataType: 'json',
  4. url: url,
  5. success: function(data){
  6. $('#person').empty();
  7. $.each(data.posts[2], function(x, y){
  8. $('<div />').html(x + ' = ' + y).appendTo('#person');
  9. });
  10. },
  11. error: function(data){
  12. $('#person').html('BŁĄD').removeClass('success').addClass('error');
  13. }
  14. });



I tutaj nie wiem jak nadać $.each by czytał całość bo jeśli dodam data.posts[2] wczytuje mi całą zawartość ID,

Druga sprawa próbowałem także wyświetlić same imiona taką linijką:
data.name ale niestety też porażka.

Może ktoś wie jak to poprawić?
skowron-line
[JAVASCRIPT] pobierz, plaintext
  1. jquery.parseJSON(data);
[JAVASCRIPT] pobierz, plaintext
i dalej już powinno być z górki

EDIT
Bzdura atrybut dataType: jSON jest odpowiedzialny za to że dane zwrócone są już przerzucone przez parser.

Zrób sobie console.log(data), console.log(data.person) bo tu powinno Ci pokazać tablice więc w each powinienieś mieć zamiast data.posts[2] data.person.
Vercio
Wyniki już się zawężają ale jeszcze nie do końca:

[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. type: "GET",
  3. url: url,
  4. //dataType: 'JSON',
  5. success: function(data){
  6.  
  7. var obj = jQuery.parseJSON(data);
  8.  
  9. $('#person').empty();
  10. $.each(obj.person, function(x, y){
  11. $('<div />').html(x + ' = ' + y).appendTo('#person');
  12. });
  13. },
  14. error: function(data){
  15. $('#person').html('BŁĄD').removeClass('success').addClass('error');
  16. }
  17. });
[JAVASCRIPT] pobierz, plaintext


Teraz dostaję wynik:

Cytat
0 = [object Object]
1 = [object Object]
2 = [object Object]


I nie mam pojęcia jak to obejść.
skowron-line
Eh.
Kod
{
"id": 2,
"name": "Kamil",
"age": 22,
"description": "tresc"
}

Nie wpadłeś na to żeby sprawdzić co zwróci y.id, y.name, y.age, y.description ?


Edit:
Taka rada. Nadawaj nazwy zmiennym tak by coś znaczyły
y -> person
obj.person -> persons (person_list)

łatwiej będzie Ci to czytać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.