Automatyczne sortowanie JSON przez Operę i Chrome

Niedawno napotkałem na dość ciekawy problem. Pobierałem sobie ajaxem dane w postaci JSON a następnie wyświetlałem je w takiej kolejności, w jakiej otrzymałem. Jednak pewnego dnia klient zgłosił mi błąd, że dane wyświetlają się odwrotnie pod Chrome. Jak się później okazało podobny problem był również z Operą. A by przedstawić Wam dokładnie problem, pokażę przykładowy kod i dane, które powodują błąd.

Kod js:

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

oraz plik testjs.php

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

Jak widzicie, plik testjs.php generuje mi dane w kolejności 3,2,1. Niestety Opera i Chrome odbiera te dane w kolejności posortowanej 1,2,3. FireFox czy też IE nie sortują danych.

Rozwiązaniem tej sytuacji okazało się niestosowanie indeksów numerycznych tylko tekstowych, np.

<?php
$ar = array('c3'=>'bla','c2'=>'ola','c1'=>'costam');
echo json_encode($ar);
?>

Zamiast literki 'c' można wstawić dowolny tekst. Jeśli jednak ktoś z różnych przyczyn nie może zrobić takiego obejścia, to pozostaje jedynie sortowanie danych w js.

Ostatnio komentowane

  1. Pager 2.5.1 oraz EPa... Na szybko2
  2. Pager 2.5.1 oraz EPa... Sławek
  3. Mysql - FAQ Piotr
  4. Liczba dni roboczych Na szybko2
  5. Liczba dni roboczych Naszybko
  6. Klasa widoku nospor
  7. Klasa widoku freebox

Ostatnio na forum

  1. programista php-webm... pracamatysart
  2. Programista PHP/ Mag... Create Magento 2 Marketplace
  3. Baza Danych gosc
  4. Baza Danych YankeS
  5. Baza Danych gosc
  6. Baza Danych YankeS
  7. Problem z bazą danyc... Baza Danych

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer