如何在动态下拉列表中维护排序顺序?

时间:2014-11-29 18:37:48

标签: jquery json sorting laravel laravel-4

我按如下方式返回JSON响应,以动态填充下拉列表:

   Route::get('api/city_list', function()
   {
       $selected_state = Input::get('selected_state');

       $city_list = City::where('state_id', '=', $selected_state)
           ->orderBy('name')
           ->lists('name', 'id');

       return $city_list;
   });

直接点击URL时,数据按预期排序,但在处理客户端时,数据按ID排序,而不是按城市名称排序。 JQuery的:

    $.getJSON("<URL>",
        { selected_state: $('#location_state').val() },
        function(data) {
            console.log(data) // << HERE THE LOG SHOWS THE SORT BY ID NOT NAME
            var city = $('#location_city');

            city.empty();

            $.each(data, function(index, value) {
                city.append($('<option />').val(index).text(value));
            });
        }
    );

毫无疑问,我缺少一些简单的东西,但为什么要使用数据呢?我想请求数据,它是服务器端排序和维护排序顺序。

2 个答案:

答案 0 :(得分:0)

为什么不在客户端对数据进行排序呢?

data.sort(function(a,b) 
{
   return a.name - b.name;
});

答案 1 :(得分:0)

如果您希望在javascript(简称JSON)中重新创建对象符号数据,则可以使用第三个库来查询您的项目。我喜欢jLinq:http://hugoware.net/projects/jlinq

注意:它既轻巧又直观,但它只对大量数据有效(超过100,000的任何内容都会降低您的性能)