Я прочитал Загрузка сообщения с использованием таблиц данных
DataTables 1.10.16 с использованием исходных данных ajax и серверного режима.
Моя таблица имеет следующий код инициализации:
var substancesTable = $('#substancesTable').DataTable({
"processing": true,
"serverSide": true,
"searching": false,
"ajax": function(data, callback){
// code for ajax request
},
"language": {
"lengthMenu": "_MENU_ per page",
"zeroRecords": "Sorry no records found",
"info": "Showing <b>_START_ to _END_</b> (of _TOTAL_)",
"infoFiltered": "",
"infoEmpty": "No records found",
"processing": '<i class="fa fa-spinner fa-spin fa-2x fa-fw"></i>'
},
});
DataTables правильно использует свойство "processing"
- он показывает счетчик FontAwesome (.fa-spinner
), когда данные готовы для визуализации с помощью DataTables; что происходит, когда запрос ajax завершен.
Однако я хочу показать сообщение, например «Загрузка данных ...», пока выполняется запрос ajax.
Таким образом, в совете по предыдущей ссылке SO говорится об использовании свойства loadingRecords
в language
. Итак, я добавил это:
"language:" {
// ...
"loadingRecords": "Loading data..."
}
Это ничего не делает.
Кроме того, я бы предпочел использовать что-то похожее на мой оверлей, который я установил с помощью свойства processing
. Я считаю, что использование loadingRecords
только добавляет строку в таблицу, пока завершается процесс ajax, что в любом случае не идеально.
Я ничего не вижу в документации DataTables по этому поводу.
Какие у меня есть варианты? Как сообщить пользователю, что запрос AJAX обрабатывается? Это происходит довольно часто, поскольку некоторые поиски в моем приложении занимают> 4 секунд из-за характера данных, которые ищутся.
На веб-сайте DataTables есть противоречивая (и неверная) информация: https://datatables.net/forums/discussion/41654/how-to-display-a-progress-indicator-for-serverside-processing говорит, что для этого можно использовать свойство processing
вопрос. Но https://datatables.net/reference/option/language.processing (правильно) говорит, что это «когда таблица обрабатывает действие пользователя». По моему опыту, processing
срабатывает только тогда, когда DataTables выполняет некоторую работу на стороне клиента (т.е. обновляет таблицу), и не имеет ничего общего с ожиданием данных на стороне сервера.