Javascript Laravel数据表JSON响应无效
在下面的代码中,一切正常,可以获取用户日志: js: 它对我来说很好,但当我只想从数据库中获取2个字段时,它会给我 DataTables警告:表id=systemLogs-JSON响应无效 但有时它也能正常工作Javascript Laravel数据表JSON响应无效,javascript,json,laravel,response,middleware,Javascript,Json,Laravel,Response,Middleware,在下面的代码中,一切正常,可以获取用户日志: js: 它对我来说很好,但当我只想从数据库中获取2个字段时,它会给我 DataTables警告:表id=systemLogs-JSON响应无效 但有时它也能正常工作 <script> $(document).ready(function () { var table =$('#systemLogs').DataTable({ responsive: true, processing: true,
<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')
{
return $next($request);
}
它工作正常,这意味着问题来自AJAX。
我该怎么办?这是因为如果您未登录应用程序,响应将是重定向,而这是无效的AJAX响应,您可以尝试以下方法来处理重定向响应:
$(document).ready(function () {
var table =$('#systemLogs').DataTable({
responsive: true,
processing: true,
serverSide: true,
"language": {
"url": "/datatables/media/plug-in/Persian.json"
},
ajax: function(data, callback, settings) {
// make a regular ajax request
$.get('{!! url('/admin/systemLogs/data/systemLogsDataTable') !!}', function(res) {
if(res.redirect)
window.location.href = res.redirect;
callback({
data: JSON.parse(res)
});
});
},
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' },
]
});
});
首先,您使用的是php artisan服务吗?我想是的,所以我建议您使用homestead/valet或任何apache/nginx堆栈 在使用artisan服务时,Laravel随机返回重定向/404响应,这是一个已知的奇怪的包错误 --编辑-- 更新了软件包文档,并告知已知错误。
不,我必须先登录才能查看此页面。我说过,如果所选字段的数量超过3,则不会出现错误,或者如果我在服务器端设置为false,则不会再次出现错误。谢谢你说的“制造虚假服务器端”是什么意思@EHSANKHODAYAR当您将serverside设置为true时,它将每次从服务器获取数据,例如搜索或分页等,但当您将其设置为false时,它将第一次从数据库中获取所有数据,然后是搜索或分页等其他操作,另一个不是serverver端,而是客户端。但当你从服务器上取数据,不是吗@ehsankhodayarIt将以两种模式从服务器获取数据,但当您将其置于服务器模式时,它将每次从服务器获取数据,例如搜索或分页,但当它不处于服务器模式时,它将第一次从数据库获取所有日期注释所有数据,这是不合适的。
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);
}
$(document).ready(function () {
var table =$('#systemLogs').DataTable({
responsive: true,
processing: true,
serverSide: true,
"language": {
"url": "/datatables/media/plug-in/Persian.json"
},
ajax: function(data, callback, settings) {
// make a regular ajax request
$.get('{!! url('/admin/systemLogs/data/systemLogsDataTable') !!}', function(res) {
if(res.redirect)
window.location.href = res.redirect;
callback({
data: JSON.parse(res)
});
});
},
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' },
]
});
});