Datatables ajax异常后的自定义错误消息

nap*_*nap 10 ajax exception datatables

我正在使用数据表1.10.12显示数据表.用户可以指定导致服务器错误的输入参数.应向用户显示相应的错误消息,以便他们可以修改其设置,但唯一的错误选项似乎是:

  1. 在警报中显示以下一般错误:"DataTables警告:表id = trackingTable - Ajax错误.有关此错误的更多信息,请参阅http://datatables.net/tn/7 "
  2. 在浏览器控制台中显示常规错误
  3. 修改服务器以不返回任何行,即无提示失败.

在datatables ajax请求失败后,有谁知道如何显示自定义错误?

以下代码示例取自datatables 文档.Datatables处理ajax调用并处理成功和错误.

$(document).ready(function() {
    $('#example').DataTable( {
        "ajax": '../ajax/data/arrays.txt'
    } );
} );
Run Code Online (Sandbox Code Playgroud)

我可以添加到列表中的第四个选项是修改数据表源代码以自己处理错误响应.我不是那么热衷于此.

这个问题在2015年被问到,但它没有得到答案.请参阅: 显示服务器端异常

Nic*_*ett 13

如果将对象传递给ajax属性,则可以覆盖jQuery.ajax()错误方法:

$(document).ready(function () {
    $('#example').DataTable({
        ajax: {
            url: '../ajax/data/arrays.txt',
            error: function (jqXHR, textStatus, errorThrown) {
                // Do something here
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

https://datatables.net/reference/option/ajax#object

这将停止alert框中的标准错误消息.

请注意,建议不要覆盖DataTables使用的jQuery.ajax()的成功方法.


myc*_*hel 8

您可以像下面的示例一样全局实现自己的自定义错误消息。

$(document).ready(function() {
        $.fn.dataTable.ext.errMode = () => alert('Error while loading the table data. Please refresh');
        $('#example').DataTable( {
            "ajax": '../ajax/data/arrays.txt'
        });
    });
Run Code Online (Sandbox Code Playgroud)


mmu*_*taq 0

     try {
     $.ajax({
       -------
       -------
    success: function (data){
         //ShowDataTable is a js Function which takes ajax response data and display it.
           ShowDataTable(data);
    },
      //this error will catch server-side error if request fails
      error: function (xhr, textStatus, errorThrown) {
         alert(errorThrown);
         ShowDataTable(null);
       } 
      })

     }
    //this catch block will catch javascript exceptions,
    catch (Error) {
                if (typeof console != "undefined") {
                    console.log(Error);
                    ShowDataTable(null);                    
                    alert(Error);
                 }
              }
Run Code Online (Sandbox Code Playgroud)

编辑

如果您愿意接受错误(例如,如果您无法更改后端系统来修复错误),但不希望最终用户看到alert()消息,则可以更改DataTables的错误报告机制以抛出将 Javascript 错误发送到浏览器的控制台,而不是警告它。这可以使用以下方法完成:

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