我正在使用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);
}
});
}
});
} );
答案 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 ...
});
备注强>
如果允许多行选择,解决方案会有所不同。