Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wartością zwrotną PHP->XML->JQUERY
Forum PHP.pl > Forum > XML, AJAX
michau85
Witajcie
Mam plik dane.php w którym przetwarzam zawartość pliku XML:
  1. $xml=simplexml_load_file('vote.xml');
  2. $dobry=array();
  3. foreach($xml->browser as $b){
  4. $dobry[]=array('nazwa'=>$b['name'],'liczba'=>$b['votes']);
  5. }
  6. echo json_encode($dobry);
  7.  


Następnnie chcę tablicę dobry przetworzyć w jquery w pliku index.php:

  1.  
  2. $(document).ready(function() {
  3. $('#but').click(function(){
  4. $.getJSON(
  5. 'dane.php',
  6. {},
  7. function(data){
  8. alert(data[0].liczba)
  9. }
  10. )
  11. })
  12.  
  13. })
  14.  



W takiej sytuacji otrzymuję alert o treści [object Object]. Dlaczego? Funcja $.getJSON działa bez zarzutu na tablicy utworzonej ręcznie. Zmienne $b['] też działają. O co chodzi. Proszę o pomoc.
pastan
  1. $dobry[]=array('nazwa'=>$b['name'],'liczba'=>$b['votes']);

W $dobry dodajesz nową tablicę, nie obiekt. Wieć powinieneś się odwłoać tak:
  1. alert(data[0]['liczba'])
Comandeer
@pastan ale wiesz, że w JS tablice asoscjacyjne nie istnieją i tak naprawdę jest tworzony obiekt? A zapis obiekt['nazwa'] jest równoznaczny z obiekt.nazwa.

@michau85 zamiast alert użyj console.log i zobacz co rzuci Ci konsola
michau85
Przeglądarka widzi to tak:
[{"nazwa":{"0":"Firefox"},"liczba":{"0":"211"}},{"nazwa":{"0":"Google Chrome"},"liczba":{"0":"130"}},{"nazwa":{"0":"IE"},"liczba":{"0":"40"}}]

Wobec tego alert(data[0]['liczba'][0]) daje wynik 211.

Zastanawia mnie tylko dlaczego akurat taki jest zapis JSON i skąd wzięły się te zagnieżdżone zera. W XML-u ich nie ma...
Comandeer
Bo atrybuty są zwracane jako obiekty, nie jako typ prymitywny. Zrzutuj je na string i integer i dostaniesz to, co chcesz:
  1. $dobry[]=array('nazwa' => (string)$b['name'], 'liczba' => (int)$b['votes']);
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-2025 Invision Power Services, Inc.