为 jquery 数据表 ajax 调用设置错误处理程序

问题描述 投票:0回答:5

当 ajax 调用出现问题(即服务器没有响应)以将新数据加载到我的数据表时,我尝试使用自定义错误处理程序。

$table.DataTable().ajax.url(ajaxURL).load();

默认情况下它会显示一个警报,我可以通过以下设置更改它以引发 JavaScript 错误:

$.fn.dataTable.ext.errMode = 'throw';

但是这样,我只是将错误记录到控制台,并且我不知道如何捕获抛出的错误,所以我仍然无法提供自己的错误处理程序。

文档中还列出了一个错误事件,但似乎没有被触发,因此以下永远不会发出警报。

$table.on( 'error', function () { alert( 'error' );} );

到目前为止我发现的所有其他内容都是针对遗留代码的,例如设置 fnServerData,我想避免进入。

1.10 API中有设置ajax错误回调的方法吗?

javascript datatables
5个回答
55
投票

Datatables v1.10.5 中添加了新的错误事件处理(2015 年 2 月 10 日发布)。

$.fn.dataTable.ext.errMode = function ( settings, helpPage, message ) { console.log(message); };

请参阅此处的文档:


https://datatables.net/reference/event/error
https://cdn.datatables.net/1.10.5/


24
投票
使用Ajax错误函数记录错误:

$('#table').DataTable({ ajax: { dataType: "JSON", type: "POST", url: url, data: [], async: true, error: function (xhr, error, code) { console.log(xhr, code); } }, });
    

4
投票
使用事件作为自定义

错误处理程序:

$(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": { ....
    

2
投票
我正在使用 Datatables 1.10.19 + Bootstrap,提供的大多数解决方案(包括上面接受的解决方案)都不起作用。但是,我设法捕获了错误,如下所示:

"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; } } }
    

0
投票
“阿贾克斯”:{ “数据类型”:“json”, “内容类型”:“应用程序/json”, “方法”:“获取”, “网址”:$网址, “数据”:{x:y}, “dataSrc”:函数(数据){ if (data.result == "确定"){ 返回数据.yourObj; }别的{ // 在这里隐藏处理或任何加载模式 // 在页面上显示错误或其他内容 console.log("错误:" + parseResultData(data.resultData)); data.yourObj = [] //因为数据表将检查对象作为数组 返回数据.yourObj; }

} }

© www.soinside.com 2019 - 2024. All rights reserved.