我使用Ajax传递了一个关联数组(id val),并用=>的$.getJSON接收它,它正确地读取了数据并准备好了对象。然而,有一个非常恼人的排序问题。
在Chrome和IE上,数据似乎是按照关联数组的id部分排序的。因此,如果数组应该是(5=> 'xxx',3 => 'fff'),它实际上变成了(3 => 'fff',5=> 'xxx')。在FireFox上,它按预期工作,即不排序。
有什么想法吗?
发布于 2012-02-22 10:36:30
似乎最好的方法是完全避免使用关联数组。当您想发送关联数组时,只需将其作为两个单独的数组发送-一个是键,另一个是值。下面是执行此操作的PHP代码:
$arWrapper = array();
$arWrapper['k'] = array_keys($arChoices);
$arWrapper['v'] = array_values($arChoices);
$json = json_encode($arWrapper);简单的JavaScript代码可以随心所欲地处理它
for (i=0; i < data['k'].length; i++) {
console.log('key:' + data['k'][i] + ' val:' + data['v'][i]);
}发布于 2012-11-09 14:10:09
您可以为所有整数索引添加前导0。
var json = { '05' => 'xxx', '03' => 'fff' };发布于 2012-02-21 22:56:28
另一种选择是以对象数组的形式返回数据。这将确保对象保持您返回它们的顺序。
编辑:
基本上,对于每个键>值对,将其推送到一个新的数组中并对该数组执行json_encode操作。
https://stackoverflow.com/questions/9379143
复制相似问题