【发布时间】:2019-09-23 13:22:21
【问题描述】:
我正在运行 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 请求来填充表格,因此 Ajax URL 是(从资源自动创建的)到控制器的路由。
在我的控制器中,我有一个函数 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");
});
【问题讨论】:
-
您能否详细说明您得到的假设是
json响应? -
问题不是 json 响应,而是最初的 Ajax 请求。因此,函数(在控制器中)如何没有收到 Request()->wantsJson,它没有进入准备 json 响应。我猜我初始化 DataTable 时 Ajax 请求有问题或遗漏了。
标签: php ajax laravel datatables