在服务器端模式下使用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);
我对ajax调用的js看起来像这样:
var myTable = $('#myTable').DataTable( {
"serverSide": true,
"ajax": {
"url" : "/response.php",
"method" : "POST"
},
});
如何阅读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?
});
但是我找不到在那时读取ajax响应数据的方法。
有人知道这是否可行?
答案 0 :(得分:4)
老问题,但我尝试回答可能需要未来,因为我有完全相同的问题,在找到他们的文档后我发现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);
},
});
答案 1 :(得分:0)
在初始化代码块之后你可以这样做:
myTable.on('xhr', function () {
var json = oTable.ajax.json();
if (json) {
// read the json here: json.form_errors
}
});
答案 2 :(得分:0)
这应该是DataTable的ajax
属性
"dataSrc": function(json) {
if (json.CustomVariable) {
$("#some_span").html(json.CustomVariable);
}
// You can also modify `json.data` if required
return json.data;
根据相关代码的完整示例可以是
var myTable = $('#myTable').DataTable({
"serverSide": true,
"ajax": {
"url": "/response.php",
"method": "POST",
"dataSrc": function(json) {
if (json.CustomVariable) {
$("#some_span").html(json.CustomVariable);
}
// You can also modify `json.data` if required
return json.data;
},
});
参考doc> DataTables
答案 3 :(得分:0)
你应该实现 dataFilter 函数:
var myTable = $('#myTable').DataTable( {
"serverSide": true,
"ajax": {
"url" : "/response.php",
"method" : "POST",
dataFilter: function (data) {
data = jQuery.parseJSON(data);
return JSON.stringify(data.data.original);
}.bind(this)
}
});
答案 4 :(得分:-1)
您可以使用类似的ajax回调方法读取响应:
var myTable = $('#myTable').DataTable( {
"serverSide": true,
"ajax": {
"url" : "/response.php",
"method" : "POST"
},
success: function(data) {
// Request success
console.log(data);
},
error: function(data) {
// Request failed
console.log(data);
}
});
我希望它能帮到你!