15

我有一个组合框,它在更改时触发 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

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

4

1 回答 1

14

这是一个关联数组:顺序无关紧要。以下 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-09-24T23:16:18.863 回答