如何在Laravel 5.2中访问数据表服务器端处理中的json对象/数据?

时间:2017-01-01 11:22:12

标签: javascript jquery json datatables laravel-5.2

我们正在新项目中使用数据表,并且由于我们正在处理大量数据,我们正在使用数据表的服务器端处理。但是现在我们正试图弄清楚如何通过datatable从服务器获取所有数据。由于我使用自定义HTTP变量服务器端处理,当我查看返回的数据时,没有来自数据库的值。我怎样才能访问数据?请帮忙。非常感谢。这是我的代码

的javascript:

$('#table-prod-contents').DataTable({
              processing: true,
              serverSide: true,
              ajax: $.fn.dataTable.pipeline( {
                  url: '{{ url("postproductsdata") }}',
                  pages: 6000, // number of pages to cache
                  "data": function ( d ) {
                     console.log(d);
                  }
              } ),
              columns: [
                  {data: 'id', name: 'id'},
                  {data: 'category', name: 'category'},
                  {data: 'pharmaceutical', name: 'pharmaceutical'},
                  {data: 'description', name: 'description'},
                  {data: 'type', name: 'type'},
                  {data: 'unit', name: 'unit'},
                  {data: 'price', name: 'price'},
                  {data: 'created_at', name: 'created_at'},
              ],


          });

控制台,日志仅显示下图中显示的数据:

enter image description here

enter image description here

当我查看对象内部时,没有id的值。类似于id:31

Controller.php这样

public function anyData()
{
    $conditionTxt = "Medical and Lab Supplies";

    $products = Product::where('category', 'ILIKE', '%'.$conditionTxt.'%')
                        ->orderBy('created_at', 'desc')
                        ->get();

    return Datatables::of($products)->make(true);

}

1 个答案:

答案 0 :(得分:2)

选项ajax.data允许定义在数据发送之前操作数据的功能。

您可以使用ajax.dataSrc从服务器访问已接收数据,但是您也使用pipelining,但不允许这样做。

使用drawCallback选项和ajax.json() API方法来访问检索到的数据或createdRow选项或xhr.dt事件。

例如:

$('#table-prod-contents').DataTable({
    processing: true,
    serverSide: true,
    ajax: $.fn.dataTable.pipeline( {
        url: '{{ url("postproductsdata") }}',
        pages: 6000, // number of pages to cache
        "data": function ( d ) {
           console.log(d);
        }
    } ),
    drawCallback: function(settings){
       var api = this.api();

       console.log(api.ajax.json());
    },
    columns: [
        {data: 'id', name: 'id'},
        {data: 'category', name: 'category'},
        {data: 'pharmaceutical', name: 'pharmaceutical'},
        {data: 'description', name: 'description'},
        {data: 'type', name: 'type'},
        {data: 'unit', name: 'unit'},
        {data: 'price', name: 'price'},
        {data: 'created_at', name: 'created_at'},
    ],
});