Я использую jQuery DataTables, ajax и Bootstrap в небольшом проекте. Он работает в основном, и я тестирую состояния ошибок. Я установил свой html для таблицы DataTables. Существует table-responsive
div, окружающий <table>
.jQuery, DataTables, обработка ошибок ajax: избавиться от сообщения «Обработка»
<div id="errorDiv"></div>
<div id="resultTableDiv" class="table-responsive">
<table id="resultTable" class="table table-striped table-bordered table-hover table-condensed" cellspacing="0">
<thead>
<tr>
<th>...</th>
...
</tr>
</thead>
<tfoot>
<tr>
<th>...</th>
...
</tr>
</tfoot>
</table>
</div>
</div>
В DataTables инициализации I настройки на основе AJAX вызова и указать функцию обратного вызова error
. Это «работает» в том, что я могу заставить ошибку на сервере ajax на стороне сервера, и обратный вызов уволен. Я могу обработать возвращенную ошибку, как я хочу.
Моя проблема заключается в том, что при запуске вызова ajax тело таблицы «заменяется» сообщением Processing
. Это прекрасно, за исключением того, что когда ajax сообщает об ошибке с помощью обратного вызова, сообщение обработки все еще существует, и мне еще предстоит выяснить, как заставить его уйти с помощью методов DataTables или вызовов API.
моя ошибка обратного вызова выглядит
function ajaxError(jqXHR, textStatus, errorThrown) {
var obj = jQuery.parseJSON(jqXHR.responseText);
if (obj && obj.Error) {
$('#errorDiv').html("<p>" + obj.Error + "</p>");
}
}
У меня есть «глобальный» переменной, которая содержит определение DataTables таблицы. Он находится в состоянии готовности функции JQuery
var table;
$(function() {
$('#errorDiv').empty();
$('#resultTable').show();
table = $('#resultTable').DataTable({
paging: false,
processing: true,
autoWidth: false,
ordering: false,
ajax: {
url: "ions.cgi",
dataType: 'json',
dataSrc: "LIST",
error: ajaxError
}, ...
В обратном вызове ошибки я попытался все следующее:
table.clear().draw(); // does nothing
table.fnRedraw(); // says that function does not exist
В этом состоянии ошибки как следует Processing
сообщения сбросить?
Хм, я предположил, что будет вызов API, который мне не хватало. Я вижу именованный обработчик div, но сокрытие кажется немного взломанным. Я не говорю, что это не тот ответ, что он чувствует себя неэлегантным, когда есть все другие функциональные возможности API. Тем не менее, он работает и благодарит вас –
Немного хакерский, но [альтернативный] (https://www.datatables.net/plug-ins/api/fnProcessingIndicator) не дает никакой пользы и является плагином. [Здесь] (http://datatables.net/forums/discussion/7325/processing-notice-and-ajax-error-handling) вы можете прочитать объяснение, почему оно остается открытым. – vcanales
Работает в DataTables 1.10.11. Идентификатор элемента по-прежнему состоит из '[table-name] _processing' –