首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery:$.getJSON对Chrome / IE上的数据进行排序?

jQuery:$.getJSON对Chrome / IE上的数据进行排序?
EN

Stack Overflow用户
提问于 2012-02-21 22:20:18
回答 3查看 3K关注 0票数 1

我使用Ajax传递了一个关联数组(id val),并用=>的$.getJSON接收它,它正确地读取了数据并准备好了对象。然而,有一个非常恼人的排序问题。

在Chrome和IE上,数据似乎是按照关联数组的id部分排序的。因此,如果数组应该是(5=> 'xxx',3 => 'fff'),它实际上变成了(3 => 'fff',5=> 'xxx')。在FireFox上,它按预期工作,即不排序。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-22 10:36:30

似乎最好的方法是完全避免使用关联数组。当您想发送关联数组时,只需将其作为两个单独的数组发送-一个是键,另一个是值。下面是执行此操作的PHP代码:

代码语言:javascript
复制
    $arWrapper = array();
    $arWrapper['k'] = array_keys($arChoices);
    $arWrapper['v'] = array_values($arChoices);
    $json = json_encode($arWrapper);

简单的JavaScript代码可以随心所欲地处理它

代码语言:javascript
复制
            for (i=0; i < data['k'].length; i++) {
                console.log('key:' + data['k'][i] + ' val:' + data['v'][i]);
            }
票数 0
EN

Stack Overflow用户

发布于 2012-11-09 14:10:09

您可以为所有整数索引添加前导0。

代码语言:javascript
复制
var json = { '05' => 'xxx', '03' => 'fff' };
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 22:56:28

另一种选择是以对象数组的形式返回数据。这将确保对象保持您返回它们的顺序。

编辑:

基本上,对于每个键>值对,将其推送到一个新的数组中并对该数组执行json_encode操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9379143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档