我延長了數據表的默認值,像這樣:如何從ajax/error回調中刷新數據表?
$.extend(true, $.fn.dataTable.defaults, {
lengthChange: false,
deferRender: true,
displayLength: 25,
stateSave: false,
serverSide: true,
processing: true,
ajax: {
type: 'POST',
error: function($xhr) {
if($xhr.status === 401) {
wxu.openLoginBox(function(data) {
// HELP: how can I get the DataTables object from this context?
});
} else {
wxu.notify({'text': "Could not load list", 'cssClass': 'error', timeout: 0});
}
}
}
});
有時用戶會得到登出,然後當他們試着改變頁面或排序,它只是說,「處理」,直到永遠。我可以通過查找401
錯誤響應(這是我的應用程序在您超時時發送的內容)來捕獲此問題,但之後我不知道如何「刷新」數據表以使「處理」消息消失,因此,你可以繼續使用該應用程序。
請注意,我將這裏的默認值擴展爲.js
文件 - 我不知道DataTables此時將綁定什麼元素。
如何從ajax/error回調中「修復」dataTables?
我認爲這可能有問題。我仍然需要在每個實例的基礎上設置ajax URL。如果我將'ajax'默認爲一個函數,那麼我將失去對內部屬性的訪問。 – mpen
如果你的''ajax.url'與你的初始化選項一樣正常,它應該被設置爲你函數的屬性,並且可以通過api使用['init()']來獲取(https://datatables.net/參考/ API /的init())。 –
我以爲會工作,但我剛剛嘗試過 - 因爲我擴展了默認值,當我用'{data:{url:'xxx'}}初始化dataTables時,它覆蓋了整個函數。它永遠不會被調用。 – mpen