【问题标题】:"Undefined index: data"“未定义的索引:数据”
【发布时间】:2019-10-07 09:42:30
【问题描述】:

我对 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
    }
   ]
}

怎么了?

【问题讨论】:

    标签: jquery laravel datatables yajra-datatable


    【解决方案1】:

    在控制器中:

    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);
    }
    

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

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

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

    在js中:

    $(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' }
                ]
            });
        });
    });
    
    

    在刀片文件中:

    <table class="table table-bordered" id="table">
       <thead>
          <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Price</th>
            <th>Amount</th>
            <th>Share</th>
          </tr>
       </thead>
    </table>
    

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 2014-12-10
      • 2012-12-08
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多