从数据表中获取数据,然后通过它与阿贾克斯
问题描述:
我使用jQuery的数据表,我可以使用此代码从数据表中获取数据,然后通过它与阿贾克斯
var str = $.map(table.rows('.selected').data(), function (item) {
return item[5]+" "+item[0]
});
其中item[5]
是ID得到所选行的数据PHP,item[0]
是一个字符串。
我想分割传递id和字符串的返回字符串。 特别在
data : {}
创建于Ajax代码错误的位置是在该代码的问题。
<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);
}
});
}
});
});
答
原因
你只是只允许一个行选择。但是,您正在使用$.map
,它会按照您的预期返回Array
而不是string
。仅在一行中使用$.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 ...
});
注意
,如果你允许多行选择的解决方案将是不同的。
您是否尝试过在浏览器中使用javascript调试器? – RiggsFolly
否**使用JavaScript调试器**它是一个伟大的工具,并且存在于所有浏览器中。试试F12 – RiggsFolly