从datatable获取数据,然后使用ajax将其传递给php

时间:2015-08-15 23:37:15

标签: javascript php jquery ajax datatables

我正在使用jQuery DataTables,我可以使用此代码从所选行中获取数据

var str = $.map(table.rows('.selected').data(), function (item) {
                    return item[5]+" "+item[0]
                });

其中item[5]是id,item[0]是一个字符串。

我想分割返回字符串以传递id和字符串。 特别是在

中的ajax代码中创建的错误
data : {}

此代码中的问题在哪里。

<script>

$(document).ready(function() {
    var table = $('#liveSearch').DataTable();
    $('#liveSearch tbody').off('click', 'tr').on( 'click', 'tr', function () {
        if ( $(this).hasClass('selected') ) {
            $(this).removeClass('selected');
        }
        else {
            table.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
        }
    } );

        $('.example3-1').on('click', function () {
            if ((table.rows('.selected').data().length) > 0) {
                var str = $.map(table.rows('.selected').data(), function (item) {
                    return item[5]+" "+item[0]
                });
                console.log(str);
            $.confirm({
                confirmButtonClass: 'btn-info',
                cancelButtonClass: 'btn-danger',
                confirm: function () {
                    $.ajax({
                        type: 'post',
                        url: 'delete.php',
                        data: {
                            str1 : str.substr(0,str.indexOf(' ')),
                            str2 : str.substr(str.indexOf(' ')+1)
                        },
                        success: function( data ) {
                            console.log( data );
                        }
                    });
                    table.row('.selected').remove().draw(false);

                }
            });
        }
        });
} );

1 个答案:

答案 0 :(得分:0)

  

<强>原因

您只允许选择一行。但是您正在使用$.map,它会按预期返回Array而不是string。将$.map仅用于一行是没有意义的。

  

<强>解

使用以下代码来获取所选行的数据并生成所需的字符串。

var rowdata = table.row('.selected').data();
var str = rowdata[5] + " " + rowdata[0];

可以进一步简化:

var rowdata = table.row('.selected').data();

// ... skipped ...

$.ajax({

   // ... skipped ...

   data: {
      str1: rowdata[5],
      str2: rowdata[0]
   }

   // ... skipped ...

});

  

备注

如果允许多行选择,解决方案会有所不同。