服务器端排序的数据在数据表中没有以相同的顺序显示

Ash*_*was 2 json codeigniter datatables

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

在此处输入图片说明

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

我已经检查了用于调试目的的 CodeIgniter 选择查询,即

$this->db->get_compiled_select()
Run Code Online (Sandbox Code Playgroud)

它正在显示

'SELECT *
FROM `tmp`
ORDER BY `country` DESC'
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

我的 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>
Run Code Online (Sandbox Code Playgroud)

如果我在 datatables 参数中设置了"order": [[ 6, "desc" ]],那么它会在得到 json 响应后进行排序。我不想添加客户端脚本来订购一列。我只想在数据表中使用排序的 json 响应。谁能帮我这个?

mmu*_*taq 5

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

$('#example').DataTable( {
    "order": []
} );
Run Code Online (Sandbox Code Playgroud)

DataTables 在初始化期间没有应用排序。行按它们被 DataTables 读取的顺序显示(即如果是 DOM 则是来自 DOM 的原始顺序,或者如果是 Ajax / 数据则是数据数组):

来源:数据表:订单