从数据表中获取数据,然后使用 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
如果允许多行选择,解决方案会有所不同。
我正在使用 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
如果允许多行选择,解决方案会有所不同。