Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z wartością zwrotną PHP->XML->JQUERY
michau85
post 12.08.2015, 12:03:08
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
pastan
post 12.08.2015, 12:36:29
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 3
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


  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'])
Go to the top of the page
+Quote Post
Comandeer
post 12.08.2015, 13:38:01
Post #3





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


@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


--------------------
Go to the top of the page
+Quote Post
michau85
post 12.08.2015, 15:49:15
Post #4





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 3.01.2010

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Comandeer
post 12.08.2015, 16:02:13
Post #5





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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']);


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 15:13