ATENTIE la trimiterea datelor prin json

La trimiterea unui array asociativ prin JSON se schimba ordinea elementelor

Ipoteza

Trimitem de pe server, prin AJAX, pe client, un array encodat JSON.

Acesta este un array asociativ de tip dbId => caption. De exemplu:

12 => Afine
32 => Mere
13 => Pere

In JS, in anumite cazuri, acest array va ajunge ordonat dupa cheie, chiar daca initial el avea o alta ordine, ca in exemplu nostru unde era sortat alfabetic :

12 => Afine
13 => Pere
32 => Mere

 

Cauze (pot fi toate, poate fi numai una) :

  1. browser-ul – cateodata Chrome si Firefox vor schimba ordinea elementelor (vezi http://stackoverflow.com/questions/5020699/how-do-you-stop-chrome-and-opera-sorting-json-objects-by-index-asc)
  2. jQuery.each – daca elementele prin care trece each sunt obiecte, atunci ordinea in care se iau nu este garantata (vezi http://stackoverflow.com/questions/25155384/is-the-sort-order-of-jquerys-each-guaranteed)
  3. js foEach – intotdeauna va face loop dupa index (vezi http://stackoverflow.com/questions/13600922/does-javascript-array-foreach-traverse-elements-in-ascending-order)

Solutia :

Trimite array-urile neasociative (adica cheia sa fie mereu integeri succesivi : 0,1,2,3,….)

Odata ce faci asa, este safe sa folosesti oricare din cele trei metode de mai sus.

About

Software Development Manager, Architect

Categories: HINTS (tehnice) |

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]