【问题标题】:Jquery getJSON sorts my data by id automaticallyJquery getJSON 自动按 id 对我的数据进行排序
【发布时间】: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 对其进行排序
  • 既然你已经展示了你的代码,我已经在下面更新了我的答案。

标签: jquery ajax json sorting getjson


【解决方案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);
        });
    }
});

【讨论】:

  • 天才!虽然我仍然认为它认为它们是相同的,但它们显然不是一样有点奇怪;)谢谢将数组键重新排序为字符串。
猜你喜欢
  • 2012-03-11
  • 2012-01-11
  • 1970-01-01
  • 2015-02-14
  • 2012-11-09
  • 2021-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多