为 jQuery Datatables ajax 调用设置错误处理程序

set an error handler for jquery datatables ajax call

本文关键字:错误 处理 程序 设置 调用 jQuery Datatables ajax      更新时间:2023-09-26

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

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

默认情况下,它会显示一个警报,我可以使用以下设置将其更改为抛出 javascript 错误:

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

但是有了这个,我只是将一个错误记录到控制台,我不确定如何捕获抛出的错误,所以我仍然无法提供自己的错误处理程序。

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

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

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

有没有办法在 1.10 API 中设置 ajax 错误回调?

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

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

在此处查看文档:

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

使用 Ajax error 函数记录错误:

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

我正在使用数据表 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;
      }                           
    } 
  }