“未定义的索引:数据”

时间:2019-05-21 03:43:17

标签: jquery laravel datatables yajra-datatable

我对Yajra \ DataTables有问题; 当我尝试通过以下方式从控制器获取数据时:

$servives = DB::table('services')->where('status', '=', 3)->get();
return datatables($servives)->toJson();

它给我以下错误:

{"draw":1,"recordsTotal":3,"recordsFiltered":0,"data":[],"error":"Exception Message:\n\nUndefined index: data"}

在这里您可以检查我的js代码:

  $(document).ready(function () {
            $('#table').DataTable({
                processing: true,
                serverSide: true,
                ajax: "{{ route('all.my_services') }}",
                columns: [
                    { data: 'id', name: 'id' },
                    { data: 'name', name: 'name' },
                    { data: 'price', name: 'price' },
                    { data: 'amount', name: 'amount' },
                    {"mData": {},
                        "mRender": function (data, type, row) {
                            return '<a href="/partner-share-services?id='+ data.id + '"><button class="btn btn-success">Share</button></a>';
                        }
                    }

                ]
            });
        });

在这里您可以看到我的 $ services 数组:

Collection {#326
  #items: array:2 [
    0 => {#319
      +"id": 103
      +"partner_id": 1004
      +"name": "AI-92"
      +"price": 146
      +"amount": 9007
      +"created_at": "2019-05-15 07:04:07"
      +"updated_at": "2019-05-16 06:10:13"
      +"is_active": null
      +"status": 3
    }
    1 => {#332
      +"id": 104
      +"partner_id": 1004
      +"name": "AI 95"
      +"price": 190
      +"amount": 650
      +"created_at": "2019-05-16 06:49:19"
      +"updated_at": "2019-05-16 06:52:34"
      +"is_active": null
      +"status": 3
    }
   ]
}

怎么了?

1 个答案:

答案 0 :(得分:1)

在控制器中:

       intercept(request: HttpRequest<any>, next: HttpHandler): 
            Observable<HttpEvent<any>> {
            let currentUser = this.authservice.currentUser;
         if (currentUser && currentUser.token) {
           request = request.clone({
           setHeaders: {
           Authorization: `Bearer ${currentUser.token}`
           }
          });
         }

         return next.handle(request)

在路由文件(web.php)中:

在这里,我使用控制器名称ServiceController,可以用您的控制器名称替换

use DataTables;
use DB;


public function getDatatable(){
   $services = DB::table('services')->where('status',3);

   return Datatables::of($services)
          ->addColumn('share', function($services){
               return '<a href="/partner-share-services?id='. $services->id . '"><button class="btn btn-success">Share</button></a>';
          })
          ->rawColumns(['share'])
          ->make(true);
}

在js中:

Route::get('get-datatable', 'ServiceController@getDatatable')

在刀片文件中:

$(document).ready(function(){
     $(function() {
        var baseurl = window.location.protocol + "//" + window.location.host;
        var table = $('#table').DataTable({
            processing: true,
            serverSide: true,
            ajax: baseurl + "/get-datatable",
            columns: [
                { data: 'id', name: 'id' },
                { data: 'name', name: 'name' },
                { data: 'price', name: 'price' },
                { data: 'amount', name: 'amount' },
                { data: 'share', name: 'share' }
            ]
        });
    });
});