2016-08-11 34 views
1

我正在显示使用数据表的数据表1.10.12。用户可以指定在服务器上导致错误的输入参数。相应的错误信息应显示给用户,使他们可以修改自己的设置,但唯一的错误选项似乎是:Datatables ajax异常后的自定义错误消息

  1. 显示在警报以下一般性错误:“数据表警告:表ID = trackingTable - Ajax的错误。关于此错误的详细信息,请参阅http://datatables.net/tn/7
  2. 显示在浏览器控制台
  3. 的一般错误修改服务器返回任何行,这是失败的默默。

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

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

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

第4个选项,我可以添加到列表中会修改数据表的源代码来处理错误响应自己。我并不那么热衷于。

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

+0

很多方法可以做到这一点..你可以在发送ajax请求的同时在javascript函数中应用try catch,以及在发生错误时可以在ajax错误函数中显示错误消息。 – mmushtaq

+0

谢谢mmushtaq。如何将try catch添加到数据表ajax请求中? – nap

+0

对您有帮助吗? https://datatables.net/reference/event/error – Adam

回答

-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的错误报告机制,以向浏览器的控制台抛出Javascript错误,而不是提醒它。

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

我不认为这是一个解决方案。DataTables [link](https://datatables.net/)处理ajax调用本身。我已经更新了这个问题来澄清这一点。 – nap

+0

从好的一面来说,我花了相当一段时间在今天添加代码以防止用户首先设置无效请求。然而,看起来有必要在occaision上显示服务器端故障导致的有意义的错误消息,所以我认为Datatables必须能够做到这一点。 – nap

+0

您提到的'错误'是由于'ajax请求'失败造成的。 。只需在'Document.Ready()'中添加'try catch'来捕捉'JS异常'。另一种解决方案是在'DataTable Error link'中提供的..请参阅我的编辑 – mmushtaq

2

如果你传递一个对象给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框中停止标准错误消息。

请注意,不建议重写jQuery.ajax的成功方法(),因为它是使用数据表。