如何通过JQuery ajax调用将dataTable的选定行的数据发布到php控制器

斯鲁蒂

我使用了https://datatables.net/examples/api/select_row.html中的这段代码来选择多行

$('#table tbody').on('click','tr', function(){
    $(this).toggleClass('selected');
});

这是jquery数据表的初始化

$(document).ready(function() {

    //datatables
    table = $('#table').DataTable({ 

        "processing": true, //Feature control the processing indicator.
        "serverSide": true, //Feature control DataTables' server-side processing mode.
        "order": [], //Initial no order.

        dom: 'Bfrtip',
        buttons: [
            //'copyHTML5', 'csvHTML5', 'excelHTML5', 'pdfHTML5', 'printHTML5'
            'copy', 'csv', 'print'//, 'excel', 'pdf'
        ],
        // Load data for the table's content from an Ajax source
        "ajax": {
            "url": "<?php echo site_url('person/ajax_list')?>",
            "type": "POST"
        },

        //Set column definition initialisation properties.
        "columnDefs": [
            { 
                "targets": [ -1 ], //last column
                "orderable": false, //set not orderable
            },
            { 
                "targets": [ -2 ], //2 last column (photo)
                "orderable": false, //set not orderable
            },
        ],

    });

    $('#table tbody').on('click','tr', function(){
        $(this).toggleClass('selected');
    });
}

现在,我想通过ajax调用将这些选定的行发送到php控制器,这样我就可以使用这些选定的行数据创建一个csv文件。

我创建了一个按钮,单击该按钮会调用以下函数,在该函数中进行ajax调用

    function create_PO()
    {
        $('#btnSel').text('creating...');
        $('#btnSel').attr('disabled',true);

        var url = "<?php echo site_url('person/create_csv')?>";
        var selectedData = table.rows('.selected').data();
        //console.log(selectedData);
        //alert(selectedData.length);
        newData = new Array();
        for(i=0;i<selectedData.length;i++){
            newData.push(selectedData[i]);
        }
        jsonData = JSON.stringify({data : (selectedData[0].slice(0,5))});
        //console.log(jsonData);
        //newData = $.serialize(newData);
        //console.log(newData);

        $.ajax({
            url : url,
            type: "POST",
            data: jsonData,
            contentType: false,
            processData: false,
            dataType: "JSON",
            success: function(data)
            {
                /*data.forEach(function(e){
                    console.log(e);
                })*/
                console.log(data);
                // alert("sheet created successfully");

                // $('#btnSel').text('create');
                // $('#btnSel').attr('disabled',false);

            },
            /*error: function (jqXHR, textStatus, errorThrown)
            {
                alert('Error creating file');
            }*/

        });

    }}

当我echo($_POST)从控制器执行操作时,响应显示为空数组。同样,console.log(data)ajax成功选项中功能也不会打印任何内容。有人可以告诉我问题是什么吗?谢谢!

哈米德·阿斯加里(Hamid Asghari)

jQuery部分

您没有在控制台中获得任何信息的原因是,success回调获取的是服务器返回的数据,而不是发送的数据。尝试console.log(jsonData)

另外,要分析发送的数据,请使用Chrome开发者工具上的“网络”标签。


的PHP

在PHP方面,您可能正在请求有效负载中传递数据,那是因为您的表单是JSON类型,而不是 Content-Type: application/x-www-form-urlencoded

要访问它,请使用以下内容代替$_POST

$data = file_get_contents('php://input');

处理JSON

要将字符串化的json处理为数组:

$processedData = json_decode($data);

现在您可以像这样访问数组属性:

foreach($processedData as $item){
        // do stuff
        echo $item;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法通过AJAX将数据发布到Grails中的控制器的Action中

如何使用AJAX将数据发布到ASP.NET MVC控制器?

如何在API中使用Ajax将Laravel表单数据发布到控制器

Laravel - 如何通过 AJAX (jQuery) 调用控制器函数

如何通过Ajax jQuery将列表字符串从视图传递到控制器

如何在MVC中使用Ajax调用打开弹出窗口并将数据同时发布到控制器

如何使用jQuery将数据发布到laravel控制器方法中

JQUERY ajax将JSON发布到C#MVC控制器,但是传入的数据为null

如何使用Ajax将文件和表单数据一起发布到MVC控制器?

如何通过Post方法将数据从Ajax传递到laravel 5.2控制器

如何将选定的行数据从jquery数据表传递到Spring MVC控制器?

通过ajax发布到控制器的模型为空

MVC,如何将数据发布到控制器并重定向到 aspx 页面

DOJO:如何将选定的行从网格发送/删除到springMVC控制器

使用jquery ajax发布到CakePHP控制器

如何通过jquery / ajax在zend框架中调用控制器/动作?

我如何在laravel 5.0中将数据从视图发布到控制器?

如何将值发布到控制器以接收数据以查看 Angular 5+?

TYPO3 Extbase:如何将表格数据发布到控制器

如何将数据从ViewModel发布到控制器方法中?

如何从控制器将表单数据 IFormFile 发布到 API?

如何通过从angularJS控制器到MVC5控制器的Ajax调用获取JSON

通过ajax onchange事件将数据从laravel视图传递到控制器

如何通过jQuery $ .ajax()将JSON字符串发布到服务器?

html.beginForm通过ASP> NET-MVC5中的jQuery Ajax函数将List <强类型输入>的空值发布到控制器

通过Ajax调用Phalcon php MVC控制器

如何将数据从控制器传递给Ajax调用AngularJS的指令

如何在javascript中使用单个ajax调用将数据插入更多AngularJS控制器

如何将数据从Ajax JavaScript传递到MVC控制器?