服务器端排序的数据在数据表中未按相同顺序显示

时间:2018-06-28 06:02:06

标签: json codeigniter datatables

我正在使用数据表来显示数据库中的数据。我正在使用CodeIgniter进行服务器端脚本编写。这是表格图片

enter image description here

在服务器端编码中,我按国家/地区并以降序查询数据库的顺序。

我已检查CodeIgniter选择查询以进行调试,即

$this->db->get_compiled_select()

它显示

'SELECT *
FROM `tmp`
ORDER BY `country` DESC'

这里 tmp 是我的数据库名称,并且运行良好。

这是我从数据库获得的JSON响应-(由于文本太长,我无法向您显示整个JSON响应。这就是为什么我使用一些在线json解析站点来汇总我的数据的原因。)

enter image description here

我的json响应显示按查询顺序对数据库的数据,即按降序排列的国家/地区列。这就是第一个对象显示“津巴布韦” 的原因。但是在数据表中,它显示的是其他数据,即“ Andora”

这是我的JavaScript-

    <script type="text/javascript">
        $(document).ready( function () {
            $('#myTable').DataTable( {
                "responsive": true,
                "processing": true,
                "serverSide": true,
                "ajax": {
                    "url":  "http://localhost/adminDemo/admin/test",
                    "type": "POST"
                },
                "columnDefs" : [
                    {"width" : "20%", "targets" : 7},
                    {"width" : "30%", "targets" : 5},
                    { "orderable": false, "targets": 7 } //Don't order the action column
                ]
            } );
        } );
    </script>

如果我在datatables参数中设置了“ order”:[[6,“ desc”]] ,那么它将在得到json响应后进行排序。我不想添加客户端脚本来订购一列。我只想在数据表中使用排序的json响应。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

该问题的一种简单解决方案是,只需为[]选项指定空的order

$('#example').DataTable( {
    "order": []
} );
  

在初始化期间,DataTable不应用任何顺序。按DataTables读取行的顺序显示行(即,如果是DOM源,则是来自DOM的原始顺序;如果是Ajax /数据,则是数据数组):

来源:DataTable:Order