为jquery datatables ajax调用设置错误处理程序

aar*_*ron 20 javascript jquery-datatables

我正在尝试在ajax调用上出现错误(即服务器没有响应)时有一个自定义错误处理程序,用于将新数据加载到我的数据表中.

$table.DataTable().ajax.url(ajaxURL).load();
Run Code Online (Sandbox Code Playgroud)

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

$.fn.dataTable.ext.errMode = 'throw';
Run Code Online (Sandbox Code Playgroud)

但有了这个,我只是在控制台上记录了一个错误,我不知道如何捕获抛出的错误,所以我仍然无法提供自己的错误处理程序.

文档中还列出了一个错误事件,但似乎没有触发,因此以下内容从不发出警报.

$table.on( 'error', function () { alert( 'error' );} );
Run Code Online (Sandbox Code Playgroud)

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

是否有方法在1.10 API中设置ajax错误回调?

s0n*_*b0k 41

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

$.fn.dataTable.ext.errMode = function ( settings, helpPage, message ) { 
    console.log(message);
};
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档:
https://datatables.net/reference/event/error
https://cdn.datatables.net/1.10.5/


Muh*_*sir 20

或者在 ajax 中使用错误函数来记录错误

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


J.C*_*ras 5

使用该事件作为自定义错误处理程序

$(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": {
          ....
Run Code Online (Sandbox Code Playgroud)

  • 也不要忘记在事件之前添加 `$.fn.dataTable.ext.errMode = 'none';` 以关闭默认错误警报 (4认同)