【问题标题】:Getting data from datatable then passing it to php with ajax从数据表中获取数据,然后使用 ajax 将其传递给 php
【发布时间】:2015-08-15 23:37:14
【问题描述】:

我正在使用 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);

                }
            });
        }
        });
} );

【问题讨论】:

  • 你试过在浏览器中使用javascript调试器吗?
  • 使用 javascript 调试器它是一个很棒的工具,并且存在于所有浏览器中。试试 F12

标签: javascript php jquery ajax datatables


【解决方案1】:

原因

您只允许选择一行。但是您使用的是$.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 ...

});

注意事项

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

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2018-02-05
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多