15

変更時にjquery関数をトリガーするコンボボックスがあり、データベースからの結果をID(テーブル都市)ではなく名前でソートし、IDと都市の名前でjsonファイルを作成するphpスクリプトを呼び出します。問題は $.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 に答える