DataTables使用您自己的参数读取ajax响应

And*_*ndy 2 ajax jquery datatables

在服务器端模式下使用DataTables 1.10.15。我创建了一个PHP脚本来提供JSON响应,其中包括它们在文档中提到的参数:https : //datatables.net/manual/server-side#Returned-data

我想将自己的参数添加到JSON响应中,例如

$response = [
    'data' => [ ], // Required by DataTables 
    'form_errors' => [ ] // Not required by DataTables
];
echo json_encode($response);
Run Code Online (Sandbox Code Playgroud)

我为ajax调用准备的js看起来像这样:

var myTable = $('#myTable').DataTable( {
    "serverSide": true,
    "ajax": { 
        "url" : "/response.php",
        "method" : "POST"
    },
});
Run Code Online (Sandbox Code Playgroud)

我如何阅读ajax响应?我已经在API中看到有一种.on('xhr')方法(https://datatables.net/reference/event/xhr)在ajax请求完成时触发,例如

var myTable = $('#myTable').DataTable( {
    "serverSide": true,
    "ajax": { 
        "url" : "/response.php",
        "method" : "POST"
    },
}).on( 'xhr.dt', function () {
    // Read response here?
});
Run Code Online (Sandbox Code Playgroud)

但是我当时找不到找到ajax响应数据的方法。

有人知道这是否可能吗?

Idh*_*ian 6

旧问题,但是我会尝试回答将来可能需要的问题,因为我遇到了完全相同的问题,并且在查找了他们的文档后发现drawCallback

从您的代码:

var myTable = $('#myTable').DataTable( {
    "serverSide": true,
    "ajax": { 
        "url" : "/response.php",
        "method" : "POST"
    },
    "drawCallback": function (settings) { 
        // Here the response
        var response = settings.json;
        console.log(response);
    },
});
Run Code Online (Sandbox Code Playgroud)