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 错误
是否可以在 javascript/jquery 中创建一个空的多维数组?