2 つのドロップダウン選択ドロップダウンがあります。1 つは地域用で、もう 1 つは選択した地域の都市用です。結果は AJAX によって読み込まれ、私の応答では、すべての都市を JSON 配列で取得します。
{
    1709: "Geertruidenberg", 
    1710: "Netersel", 
    1711: "Macharen", 
    1712: "Beers", 
    1713: "Hank", 
    1714: "Oudemolen", 
    1715: "Nistelrode"
}
この小さなプラグインを使用して、選択ドロップダウンにデータをロードしています:
(function($, window) {
    $.fn.replaceOptions = function(options) {
        var self, $option;
        this.empty();
        self = this;
        $.each(options, function(index, option) {
            $option = $("<option></option>")
                .attr("value", index)
                .text(option);
            self.append($option);
        });
    };
})(jQuery, window);
そして、AJAX リクエストを実行するためのこの JavaScript の部分:
$('select#Profile_regionId').change(function() {
    $.post('/ajax/getcities', {regionid: $(this).val()}, function(data){
        //console.log(data.cities);
        $("select#Profile_cityId").replaceOptions(data.cities);
    }, 'json');
});
都市のドロップダウンが JSON 配列キーで自動的にソートされることを除いて、すべてが正常に機能します。これには sort() メソッドを使用しようとしましたが、配列ではなくオブジェクトであるため機能しません。次に、その配列を作成しようとしました:
var values = [];
$.each(data.cities, function(index,value)) {
    values[index] = value;
}
しかし、何らかの理由で、ドロップダウン リストは 1 から最初に見つかった都市の ID (配列のキー) までいっぱいになり、なぜそれを行っているのかわかりません (配列自体は正常に見えます)。
ドロップダウンリストで都市がアルファベット順に並べられるようにするにはどうすればよいですか?