Laravel - 使用 post 方法的数据table 显示原始数据而不是 table

Laravel - Datatable with post method show raw data instead of table

我有一个审计跟踪报告来显示基于日期范围的数据,select由用户编辑。因此用户将 select 页面(审核)中的范围,当点击提交时将重定向到页面 (audits_view)。

我想在数据表中显示数据,但在audits_view中,我得到的结果只是这样的原始数据

{"draw":0,"recordsTotal":490,"recordsFiltered":490,"data":[{"id":144586,"event":"created","created_at":"2021-05-19 10:28:50.660","auditable_type":"App\Model\Loglogin","user":null},{"id":144585,"event":"created","created_at":"2021-05-19 

这里是 audits_view blade 和控制器

       <table id="user_table" class="table table-bordered data-table">
                <thead>
                    <tr>
                        <th width="35%">auditable_type</th>
                        <th width="35%">event</th>
                    </tr>
                </thead>
         </table>
          
<script>
$(document).ready(function(){

    $('#user_table').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: "{{url('/')}}/report/audits",
            type: "POST",
            dataType: "json",
            'data': function ( d ) {
                d._token = "{{ csrf_token() }}";
        },
        
        columns: [
            {
                data: 'auditable_type',
                name: 'auditable_type'
            },
            {
                data: 'event',
                name: 'event'
            },
        ]
    });
  });
</script>

这里是控制器

public function audits_view(Request $request)
    {
        $this->authorize('view_audit_trails');
        $user = Auth::user();
        $date1= $request->input('date1');
        $date2= $request->input('date2');

        $data = \OwenIt\Auditing\Models\Audit::with('user')
          ->select(['id', 'event', 'created_at', 'auditable_type'])
          ->whereDate('created_at','>=',$date1)>whereDate('created_at','<=',$date2)->get();
           
        return DataTables::of($data)
            ->make(true);
              
        return view('report.audits_view', compact('date1','date2','user'));

以下只是基本思路:

视图函数应该是这样的:

public function audits_view(Request $request) {
        $this->authorize('view_audit_trails');
        $user = Auth::user();
        $date1= $request->input('date1');
        $date2= $request->input('date2');
        return view('report.audits_view', compact('date1','date2','user'));
}

并且对于数据 table 你应该创建新的 post 路由并且在该路由上函数应该是这样的:

 public function audits_data(Request $request) {
        $date1= $request->input('date1');
        $date2= $request->input('date2');
        
        $data = \OwenIt\Auditing\Models\Audit::with('user')
      ->select(['id', 'event', 'created_at', 'auditable_type'])
      ->whereDate('created_at','>=',$date1)>whereDate('created_at','<=',$date2);
       
    return DataTables::of($data)
        ->make(true);
}

js应该是这样的:

$('#user_table').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: "{{url('/')}}/report/audits",
            type: "POST",
            dataType: "json",
            data: function ( d ) {
                d._token = "{{ csrf_token() }}",
                d.date1 = $('#date1').val(),
                d.date2 = $('#date2').val(),
        },
        
        columns: [
            {
                data: 'auditable_type',
                name: 'auditable_type'
            },
            {
                data: 'event',
                name: 'event'
            },
        ]
    });