Все отлично работает на код ниже, чтобы получать журналы пользователей:Laravel ответ DataTable недействителен JSON
ЯШ:
<script>
$(document).ready(function() {
var table =$('#systemLogs').DataTable({
responsive: true,
processing: true,
serverSide: true,
"language": {
"url": "/datatables/media/plug-in/Persian.json"
},
ajax: '{!! url('/admin/systemLogs/data/systemLogsDataTable') !!}',
columns: [
{ data: 'name', name: 'name' },
{ data: 'message_text', name: 'message_text' },
{ data: 'remote_addr', name: 'remote_addr' },
{ data: 'log_created_at', name: 'management_logs.created_at' },
{ data: 'log_updated_at', name: 'management_logs.updated_at' },
]
});
});
</script>
маршруты:
Route::get('/systemLogs/data/systemLogsDataTable','[email protected]');
public function systemLogsDataTable()
{
$logs= ManagementLog::select('management_logs.message_text','management_logs.remote_addr','management_logs.created_at as log_created_at','management_logs.updated_at as log_updated_at','managements.name')->leftJoin('managements','management_logs.management_id','=','managements.id');
return Datatables::of($logs)->make(true);
}
Он отлично работает для меня, но когда я хочу чтобы получить только 2 поля из базы данных, он даст мне
Предупреждение DataTables: таблица id = systemLogs - неверный ответ JSON.
но несколько раз он будет работать нормально.
<script>
$(document).ready(function() {
var table =$('#systemLogs').DataTable({
responsive: true,
processing: true,
serverSide: true,
"language": {
"url": "/datatables/media/plug-in/Persian.json"
},
ajax: '{!! url('/admin/systemLogs/data/systemLogsDataTable') !!}',
columns: [
{ data: 'name', name: 'name' },
{ data: 'message_text', name: 'message_text' },
]
});
});
</script>
я понял, когда проблема от промежуточного слоя:
public function handle($request, Closure $next,$guard = 'admin')
{
if(!Auth::guard($guard)->check()){
return redirect('/administrator/logout');
}else{
return $next($request);
}
}
, когда я изменил его:
public function handle($request, Closure $next,$guard = 'admin')
{
return $next($request);
}
Он отлично работает, так это означает, что проблема с AJAX. что мне делать?
Нет, я должен войти в систему перед тем, чтобы увидеть эту страницу. Я сказал, что если количество выбранных полей больше 3, ошибки нет или если я делаю ложную серверную сторону, значит, ошибки снова нет. Спасибо –
Что вы имеете в виду с ложным сервером? @ehsankhodayar –
Когда вы помещаете serveride true, он будет извлекать данные каждый раз с сервера, например, при поиске или в разбивке на страницы, а другой, но когда вы помещаете его в false, он впервые будет загружать все данные из базы данных, а затем другие вещи, такие как поиск или разбиение на страницы, а другое - не на стороне сервера, а на стороне клиента. –