Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jquery ajax i odwrotne json
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Hejka, mam taki kod js:
Kod
$.ajax({
  url: 'testjs.php',
dataType : 'json',
  success: function( data ) {
for (var i in data) alert(i);
  }
});

Kod ten pobiera ajaxem dane z testjs.php w formacie json, a następnie wyświetla w ten sposób uzyskane dane

testjs.php:
  1. <?php
  2. $ar = array(3=>'bla',2=>'ola',1=>'costam');
  3. echo json_encode($ar);
  4. ?>

Jak widzicie, skrypt generuje tablice o indeksach w kolejności 3,2,1.
Niestety przeglądarka Chrome oraz Opera przy konwersji json, sortuje dane i są one już w kolejności 1,2,3
Firefox nie sortuje danych.

Oczywiście zależy mi, by dane w JSON w przeglądarce były w takiej kolejności, w jakiej je zapodaje. Czy to bug przeglądarek, czy normalne zachowanie dla JSON i muszę inaczej to obejść?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dla JSON-a nie sądzę. Dla chrome i opery jak widać tak.
Nie da się tego obejść. To po prostu element głupoty przeglądarek. W skrócie - witaj w świecie śmieciowego JS.

Albo pobawisz się w coś takiego...
  1. $jsonArr = array(
  2. array('key' => 3, 'value' => 'bla')
  3. ....
  4. );

albo zamiast obiektu użyjesz tablicy - niestety stracisz klucze
  1. $jsonArr = array('bla', 'ola', 'costam');


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Z tego co wylukałem to rozwiązaniem jest zamienie indeksów na teksty:
$ar = array('c3'=>'bla','c2'=>'ola','c1'=>'costam');
Wówczas opera i chrome nie sortują danych.
Innym rozwiązaniem jest sortowanie danych w js.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




To nic nie dało. Próbowałem.
Kod
$.parseJSON('{"3":"bla","2":"ola","1":"costam"}');


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie, nie.... smile.gif

nie "3"
a: "c3"
lub: "dowolnytekst3"


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wybacz, niezauważyłem ;(


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wookieb Twoje rozwiązanie w pierszym poście też jest prawidłowe. Dobiero dzisiaj je przemyślałem na trzeźwo wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 22.08.2025 - 06:17