Jquery getJSON 自动按 id 对我的数据进行排序

Posted

技术标签:

【中文标题】Jquery getJSON 自动按 id 对我的数据进行排序【英文标题】:Jquery getJSON sorts my data by id automatically 【发布时间】:2012-09-16 10:42:35 【问题描述】:

我有一个组合框,它在更改时触发 jquery 函数,它调用一个 php 脚本,该脚本将数据库中的结果按名称而不是 id(表城市)排序,并创建一个带有 id 和名称的 json 文件城市。 问题来自 $.getJSON(url, data) 函数,它可以很好地检索所有 json 编码的数据,但它似乎是按 id 自动对数据进行排序

例如如果php页面生成

id  name
3   Dania Beach
1   Miami
2   Weston

在 jquery getJSON 之后它按 id 排序

id  name
1   Miami
2   Weston
3   Dania Beach

有没有办法禁用排序?或者如何按名称保存顺序?

【问题讨论】:

您能告诉我们您的 PHP 生成的确切 JSON 字符串吗? 你用的是什么浏览器? Chrome 将不加选择地按 key id 重新排序对象。其他浏览器,如 FireFox,将保留它们。 Joe Coder 在下面给出了答案。 这里是佛罗里达州的链接,json 是按顺序排列的,但是一旦我使用 jquery,它就会按 id link 对其进行排序 既然你已经展示了你的代码,我已经在下面更新了我的答案。 【参考方案1】:

这是一个关联数组:顺序无关紧要。以下 JSON 对象是等效的:


    "3" : "Danie Beach",
    "1" : "Miami",
    "2" : "Weston"



    "1" : "Miami",
    "2" : "Weston",
    "3" : "Danie Beach"

如果您需要排序,则应改为在 JSON 中嵌入一个数组:


    "beaches" : [
        "key" : "3", "value" : "Danie Beach",
        "key" : "1", "value" : "Miami",
        "key" : "2", "value" : "Weston"
    ]

示例用法:

jQuery.ajax(
    ...
    dataType: 'json',
    success: function(data) 
        jQuery.each(data.beaches, function(i, beach) 
            alert(i+': beach['+beach.key+'] = '+beach.value);
        );
    
);

【讨论】:

天才!虽然我仍然认为它认为它们是相同的,但它们显然不是一样有点奇怪;)谢谢将数组键重新排序为字符串。

以上是关于Jquery getJSON 自动按 id 对我的数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

jQuery getJSON 的“无效标签”Firebug 错误

自动完成选择名称并将 id 插入隐藏输入

是否可以在 javascript/jquery 中创建一个空的多维数组?

使用 jQuery getJson 发送列表/数组作为参数

jQuery.getJSON(url, [data], [callback])

jquery getjson得不到返回数据