数据表之后的自定义错误消息ajax异常

时间:2016-08-11 02:19:47

标签: ajax exception datatables

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

  1. 在警报中显示以下一般错误:" DataTables警告:table id = trackingTable - Ajax错误。有关此错误的详细信息,请参阅http://datatables.net/tn/7"
  2. 在浏览器控制台中显示常规错误
  3. 修改服务器以不返回任何行,即无声地失败。
  4. 有没有人知道在数据表ajax请求失败后如何显示自定义错误?

    以下代码示例取自数据表documentation。 Datatables处理ajax调用并处理成功和错误。

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

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

    这个问题在2015年被问到,但它没有得到答案。看到: display server side exception

4 个答案:

答案 0 :(得分:10)

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

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

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

回答以防万一有人还在寻找解决方案。

就我而言,我做了以下

  1. 在服务器端设置DataTablesOutput object.setError("ErrorMsg")<br>
  2. 在我的js方法$.fn.dataTable.ext.errMode = 'none';中避免错误popup.<br>
  3. 在我的页面中创建了一个错误div,以显示自定义错误消息<br>
  4. 将以下内容添加到我的js方法中以处理错误

    $('#myDataTable')
            .on('error.dt',
                function(e, settings, techNote, message) {//Logic to set the div innertext 
                 }
    

答案 3 :(得分:-1)

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

<强> 修改

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

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