从 AJAX 调用的 PHP 对数组进行排序不起作用


Ordering array from PHP called by AJAX not working

我现在正在这样做:

  $.ajax({
        url: 'full_db.php',
        type: 'GET',
        dataType: 'JSON',
        data: {col_name: firstSel},
        success: function(data) {    
         var full_options = [];
          $.each(data, function (i, data) {
         full_options.push(data.age);
        full_options.sort(function(a, b){
        return a.age - b.age;
     });
     $('#second_select').append("<option>" + data.age + "</option>");
  });
}
});

这会将所有不同的年龄附加到我的选择(second_select),如果我控制台日志full_options我明白这个:

["55", "98", "34", "30", "45", "29", "26", "22", "37", "42", "32", "33", "36", "35", "56", "46", "25", "54", "86"]

我希望按升序排列(例如:22、25、26、29,...)。

我在这里做错了什么,我得到了一个无序数组?

我正在为我所做的评论提供答案。

如果您正在执行数据库调用,请在查询中进行排序

SELECT * from table ORDER BY column_name DESC

你最好在PHP或MySQL进入JavaScript之前对数据进行排序。
但是如果你愿意,你肯定可以在JavaScript中对数组进行排序。

full_options.sort(); // ascending order [1,2,3]

full_options.sort();
full_options.reverse(); // descending order [3,2,1]

以下是您的表演:

full_options.sort(function(a, b){
    return a.age - b.age;
});

这是一种更复杂的方法,它按升序排序。但是你在错误的地方执行它。
您的代码应该是:

 $.ajax({
     url: 'full_db.php',
     type: 'GET',
     dataType: 'JSON',
     data: {col_name: firstSel},
     success: function(data) 
     {    
          var full_options = [];
          $.each(data, function (i, data) 
          {
              full_options.push(data.age); 
              $('#second_select').append("<option>" + data.age + "</option>");
          });
          full_options.sort();
     }
});