I am returning an array of banners using json_encode like this from the AJAX handler code (PHP)-
echo json_encode(array("bannersData" =>$bannersData));
The order of data is proper upto here, when it is echoed.
However, in the AJAX response handling code (javascript part), I get a different sorting of the returned object (sorted by banner ID it seems) in chrome Version 26.0.1410.64 m. I am not sure whether we have any option to enforce keeping the original sort order intact.
Here is the code -
$.ajax({
type: "POST",
async: false,
url: posturl,
data:postdata,
dataType: "json",
success: function(msg){
if($.isEmptyObject(msg.bannersData))
{
bannerOptionsHtml = "No Banner available";
}
else
{
/*getting unexpectedly sorted result here*/
}
});
Example data-
Input
When I do echo json_encode()
, following is original ordering of data -
'fggd' [12658]
banner 2 [12653]
Copy 2 of banner 1 [12655]
Copy 3 of banner 1 [12656]
Copy 4 of banner 1 [12657]
sdfds = 'xyz' [12654]
Outputs
But, following is what I get in AJAX response -
In chrome (sorting happening based on banner ID, it seems - R.H.S. column below is banner ID)
Test [12652]
banner 2 [12653]
sdfds = 'xyz' [12654]
Copy 2 of banner 1 [12655]
Copy 3 of banner 1 [12656]
Copy 4 of banner 1 [12657]
'fggd' [12658]
In firefox (as expected)
'fggd' [12658]
banner 2 [12653]
Copy 2 of banner 1 [12655]
Copy 3 of banner 1 [12656]
Copy 4 of banner 1 [12657]
sdfds = 'xyz' [12654]