AJAX ハンドラー コード (PHP) から、このような json_encode を使用してバナーの配列を返しています。
echo json_encode(array("bannersData" =>$bannersData));
ここまでエコーするとデータの順番が正しい。
ただし、AJAX 応答処理コード (javascript 部分) では、返されたオブジェクトの別の並べ替え (バナー ID で並べ替えられているようです) を chrome バージョン 26.0.1410.64 m で取得します。元の並べ替え順序をそのまま維持するオプションがあるかどうかはわかりません。
ここにコードがあります -
$.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*/
}
});
例データ-
入力
私がするときecho json_encode()
、以下はデータの元の順序です -
'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]
出力
しかし、以下はAJAX応答で得られるものです-
クロム(バナーIDに基づいてソートが行われているようです-下のRHS列はバナー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]
Firefoxで(予想どおり)
'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]