数据表对象在按钮单击时作为参数传递

时间:2016-10-26 05:50:12

标签: php ajax laravel datatables

我希望将数据表对象作为参数传递给laravel中的post方法中的控制器。我试过但它不起作用,请帮忙。以下是我尝试的代码。

数据表对象

 Array
 (
 [draw] => 1
 [columns] => Array
    (
        [0] => Array
            (
                [data] => id
                [name] => 
                [searchable] => true
                [orderable] => true
                [search] => Array
                    (
                        [value] => 
                        [regex] => false
                    )

            )

        [1] => Array
            (
                [data] => name
                [name] => 
                [searchable] => true
                [orderable] => true
                [search] => Array
                    (
                        [value] => 
                        [regex] => false
                    )

            )
    )

[order] => Array
    (
        [0] => Array
            (
                [column] => 0
                [dir] => asc
            )

    )

[start] => 0
[length] => 10
[search] => Array
    (
        [value] => 
        [regex] => false
    )

[_token] => RwkzmLMcy9VW9bzwPN54zv320YsY7Rwbt7sPZCzm

以下是Jquery数据表列表工作正常

var oTable = $('#dataTables-baselineComplete').dataTable({                          
          "processing": true,
          "serverSide": true,     
          "ajax": {
            "url": "{!!url('admin/baselinereport')!!}",
            "type": "POST",
            "data":{"_token": "{{ csrf_token() }}"},
          },
          "columns": [
                { "data": "id" },
                { "data": "name" },                 
          ],

        });

我想将此数据表对象传递给另一个路由函数。请帮忙

Html输入

<input type="button" name="search" id="search"/>

Jquery的

$("#search").click(function(){      
 $.ajax({
    url:'{!!url('admin/sample')!!}',
    method:'POST',
    data:{"_token": "{{ csrf_token() }}","datatable_object": oTable},
    success:function(response){
    }
 });

});

路线

 Route::post('admin/sample','SampleController@sampleFn');       

当我单击搜索按钮--ajax调用并将此数据表对象作为输入发布到该SampleController - sampleFn()时。请提前帮助谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用ajax.params()将DataTables提交的数据提供给上一个Ajax请求中的服务器。

由于您已使用dataTable()而不是DataTable()初始化了表格,因此您必须将此API方法称为oTable.api().ajax.params()

例如:

$.ajax({
    url:'{!!url('admin/sample')!!}',
    method:'POST',
    data:{
        "_token": "{{ csrf_token() }}",
        "datatable_object": oTable.api().ajax.params()
    },
    success:function(response){
    }
});
相关问题