javascript - Jquery ajax returns data sorted -
i have php script fetches data db, result set returned in particular order, e.g.
name: john, age: 21, address: 1234 fifth ave.
i verified order while debugging. result set pushed array, encoded json object , passed jquery script through ajax request.
var resultset = []; $.ajax({ async: false, url: 'scripts/getdata.php, datatype: "json", success: function(data) { /* store pieces of array */ resultset = data["php_resultset"]; //<--breakpoint here shows resultset sorted, if order preserved here, problem solved. } });
however, when data , analyze array, sorted, e.g.
address: 1234 fifth ave., age: 21, name: john age: 21
i want preserve order of original result set, there option have set in order that? appreciated.
update:
here snippet of php code builds array , encodes it
$data = array ( "otherdata" => array(), "php_resultset" => array() ); while ( $row = sqlsrv_fetch_array ( $stmt, sqlsrv_fetch_assoc ) ) { //push entire row result set array array_push ( $data["php_resultset"], $row ); } asort($somedata); foreach ( $somedata $key) { array_push ( $data["otherdata"], $key ); } return json_encode($data);//<--at point, though sorted $somedata before pushing $data, php_resultset maintains sorted order.
when encoding hash (associative array) json, order of key/value pairs not guaranteed preserved due differences in how hash represented in source language. example, hashes in perl stored in such manner optimize storage requirements @ expense of field order.
having said that, there several approaches can take have javascript reorder ajax result, 1 being return result along expected order of presentation, in:
{ "presentation_order": [ "name", "address", etc. ], "records": [ {"name":"juan", etc.}, etc. ] }
and use either reorder records before or while populate table on expected appear.
another approach might append value each field name in each record can used order them after retrieval , then, before display, removing ordering value field name.
so on server after converting result json, add prefix "aa_" first fieldname, incrementing prefix each succeeding field name "zz_". if first 2 field names "name" , "address" become "aa_name" , "ab_address".
then before adding record table @ client, sort fields field name , remove prefix using fieldname=fieldname.substring(3)
.
Comments
Post a Comment