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

Getting data from datatable then passing it to php with ajax

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

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

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

我想拆分 return 字符串以传递 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);

                }
            });
        }
        });
} );

CAUSE

您只允许选择一行。但是您只对一行使用 $.map which returns Array not a string as you expect. There is no sense in using $.map

SOLUTION

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

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 ...

});

NOTES

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