Установить обработчик ошибок для jQuery datatables ajax call
Я пытаюсь создать собственный обработчик ошибок, если что-то пойдет не так (например, сервер не отвечает) на вызов ajax для загрузки новых данных в мой datatable.
$table.DataTable().ajax.url(ajaxURL).load();
По умолчанию он показывает предупреждение, и я могу изменить это, чтобы выбросить ошибку javascript со следующей настройкой:
$.fn.dataTable.ext.errMode = 'throw';
Но при этом у меня просто ошибка, зарегистрированная в консоли, и я не уверен, как поймать эту заброшенную ошибку, поэтому я все еще не могу предоставить свой собственный обработчик ошибок.
В документации также есть событие с ошибкой, но похоже, что оно не срабатывает, поэтому следующие предупреждения не отображаются.
$table.on( 'error', function () { alert( 'error' );} );
Все остальное, что я нашел до сих пор, - это устаревший код, например, установка fnServerData, от которой я бы хотел не попасть.
Есть ли способ установить обратный вызов ошибки ajax в API 1.10?
Ответы
Ответ 1
Новая обработка событий ошибок была добавлена в Datatables v1.10.5 (выпущена 10 февраля 2015 г.).
$.fn.dataTable.ext.errMode = function ( settings, helpPage, message ) {
console.log(message);
};
Смотрите документы здесь:
https://datatables.net/reference/event/error
https://cdn.datatables.net/1.10.5/
Ответ 2
Используйте событие как пользовательский обработчик ошибок:
$(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": {
....
Ответ 3
В качестве альтернативы используйте функцию ошибки в ajax для регистрации ошибок
$('#table').DataTable({
ajax: {
dataType: "JSON",
type: "POST",
url: url,
data: [],
async: true,
error: function (xhr, error, code)
{
console.log(xhr);
console.log(code);
}
},...