2016-08-11 73 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的成功方法(),因爲它是使用數據表。