当 ajax 调用出现问题(即服务器没有响应)以将新数据加载到我的数据表时,我尝试使用自定义错误处理程序。
$table.DataTable().ajax.url(ajaxURL).load();
默认情况下它会显示一个警报,我可以通过以下设置更改它以引发 JavaScript 错误:
$.fn.dataTable.ext.errMode = 'throw';
但是这样,我只是将错误记录到控制台,并且我不知道如何捕获抛出的错误,所以我仍然无法提供自己的错误处理程序。
文档中还列出了一个错误事件,但似乎没有被触发,因此以下永远不会发出警报。
$table.on( 'error', function () { alert( 'error' );} );
到目前为止我发现的所有其他内容都是针对遗留代码的,例如设置 fnServerData,我想避免进入。
1.10 API中有设置ajax错误回调的方法吗?
$('#table').DataTable({
ajax: {
dataType: "JSON",
type: "POST",
url: url,
data: [],
async: true,
error: function (xhr, error, code) {
console.log(xhr, code);
}
},
});
错误处理程序:
$(document).ready(function () {
$('#myTable').on('error.dt', function (e, settings, techNote, message) {
console.log('An error has been reported by DataTables: ', message);
}).DataTable({
"displayLength": 15,
"ajax": {
....
"ajax" : {
"datatype" : "json",
"contentType" : "application/json",
"method" : "GET",
"url" : $url,
"data" : { x : y },
"dataSrc": function (data) {
if (data.result == "OK"){
return data.yourObj;
}else{
// hide processing or any loading modal here
// display error on page or something
console.log("Error: " + parseResultData(data.resultData));
data.yourObj = [] //since datatables will be checking for the object as array
return data.yourObj;
}
}
}
}
}