我正在使用如下数据表:
$('#resources_table').dataTable({
"processing": true,
"serverSide": true,
"columns": [
{ "data": "id" },
{ "data": "column1" },
{ "data": "column2" }
],
"ajax": "/resource",
"error": function(reason) {
console.log("error encountered ! ");
// process reason here to know the type of the error
// and then take appropriate action
}
});
不知怎的,我无法捕获从服务器返回的错误。如何在服务器端访问基于ajax的数据表中访问reason
和进程error
?
PS:我使用的是最新的dataTable版本:DataTables 1.10.1
答案 0 :(得分:7)
找到它。实际上,“ajax”采用3种类型的值中的一种:string
或object
或function
。
可以使用对象为ajax请求指定相应的选项,如下面的一个简单示例所示:
$('#resources_table').dataTable({
"processing": true,
"serverSide": true,
"columns": [
{ "data": "id" },
{ "data": "column1" },
{ "data": "column2" }
],
"ajax": {
"type": "GET",
"url" :"/resources",
// error callback to handle error
"error": function(reason) {
console.log("Error occurred !");
// parse "reason" here and take appropriate action
}
}
});
答案 1 :(得分:1)
我遇到了同样的问题,并希望保留所有错误的默认DataTables错误处理,除了 401错误。我最终使用DataTables statusCode
混合用于状态特定处理程序,并覆盖$.fn.dataTable.ext.errMode
以消除alert
我特意处理的错误。我没有具体处理就保留了所有其他错误的警报:
$.fn.dataTable.ext.errMode = function (settings, tn, msg) {
if (settings && settings.jqXHR && settings.jqXHR.status == 401) {
return; // Status code specific error handler will take care of this
}
alert(msg) // Alert for all other error types
};
$('#example').DataTable({
"ajax": {
"url": '/some/endpoint',
"dataSrc": 0,
"statusCode": {
401: function (xhr, error, thrown) {
window.location = window.location.origin + '/login/?next=' + window.location.pathname;
return false
}
}
},
});