Я использую Mojave / Laravel 5.8 / PHP 7.2 / Jquery.dataTables 10.1.19.
Первый раунд:
Если я не поставлю: if (!$.fn.DataTable.isDataTable('.table')) {...
Я получил эту ошибку: DataTables warning: table id=DataTables_Table_0 - Cannot reinitialise DataTable.
Я не знаю точно, почему, но я поставил этот IF, и это сработало. У меня есть другой проект, где он работает без этого.
Второй раунд:
В моем индексе я вызываю DataTable()
, который вызывает запрос Ajax для заполнения таблицы, поэтому URL-адрес Ajax - это маршрут (от ресурса, созданного автоматически) к контроллеру.
В моем контроллере у меня есть функция INDEX, которая будет получать запрос, но его необходимо проверить, если он поступил из запроса Ajax (запрос должен быть JSON) или из запроса просмотра.
Я не знаю, почему у него всегда был тип не Json.
Итак, я получил эту ошибку: DataTables warning: table id=DataTables_Table_0 - Invalid JSON response.
index.blade.php
<div class="table-responsive">
<table class="table table-bordered table-striped table-hover">
<thead>
<tr>
<th>Nome</th>
<th>NIF</th>
<th>Email</th>
</tr>
</thead>
</table>
</div>
.
.
.
<script type="text/javascript">
if (!$.fn.DataTable.isDataTable('.table')) {
$('.table').DataTable({
"ajax": "{{ route('usuarios.index') }}",
"responsive": true,
"processing": true,
"serverSide": true,
"columns": [
{ "data": "name" },
{ "data": "nif" },
{ "data": "email" },
]
});
};
</script>
UsuariosController.php
public function index(Request $request){
if (request()->wantsJson()) {
NEVER HERE
return ...
}
return view('admin.acesso.usuarios.index');
}
routes.php
Route::group(['prefix' => 'acesso'], function () {
Route::resource('usuarios', "Acesso\UsuariosController");
});