Javascript 使用函数调用DataTable并在单击时获取TD数据,但收到一个错误";无法读取属性';0';“未定义”的定义;
我在获取表上Javascript 使用函数调用DataTable并在单击时获取TD数据,但收到一个错误";无法读取属性';0';“未定义”的定义;,javascript,jquery,datatable,datatables,Javascript,Jquery,Datatable,Datatables,我在获取表上的数据时遇到问题,但收到此错误“无法读取未定义的的属性“0” 我想要的是,当我单击表的时,它假定会获得数据 这段代码运行良好,并得到了结果 var my_table= jQuery('#my_table').DataTable({ "lengthChange": false, "autoWidth": false, "searching": true, "ordering": false,
的数据时遇到问题,但收到此错误“无法读取未定义的的属性“0”
我想要的是,当我单击表的
时,它假定会获得
数据
这段代码运行良好,并得到了结果
var my_table= jQuery('#my_table').DataTable({
"lengthChange": false,
"autoWidth": false,
"searching": true,
"ordering": false,
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"admin-ajax.php",
data:{action:"table_json"},
type:"POST"
},
"columnDefs":[
{
"targets":[0],
"orderable":false,
},
],
});
jQuery('#my_table tbody').on( 'click', 'tr', function () {
var data = my_table.row( this ).data() ;
console.log(data[0]);
} );
但当我将其包装到函数示例中时:
function call_thisTable(ParameterA,ParameterB){
var my_table= jQuery('#my_table').DataTable({
"lengthChange": false,
"autoWidth": false,
"searching": true,
"ordering": false,
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"admin-ajax.php",
data:{action:"table_json"},
type:"POST"
},
"columnDefs":[
{
"targets":[0],
"orderable":false,
},
],
});
jQuery('#my_table tbody').on( 'click', 'tr', function () {
var data = my_table.row( this ).data() ;
console.log(data[0]);
} );
}
然后每次单击“按钮”时,我都会首先销毁表以重新初始化内容并调用此函数call\u thisTable(a,B)
在我第一次调用时调用此表(A,B)代码>,您将获得所需的数据,但在第二个、第三个等处,您将获得未定义的“无法读取属性“0”错误。
这行代码有点问题
$('#my_table').DataTable().destroy();
您正在初始化一个数据表,同时销毁它。试着摆脱
DataTable()
在那行。感谢@Afdufsko,
来解决这个问题。我在函数外部启动了datatable初始化
var my_table= jQuery('#my_table').DataTable({
"lengthChange": false,
"autoWidth": false,
"searching": true,
"ordering": false,
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"admin-ajax.php",
data:{action:"table_json"},
type:"POST"
},
"columnDefs":[
{
"targets":[0],
"orderable":false,
},
],
});
function call_thisTable(my_table,ParameterA,ParameterB){
jQuery('#my_table tbody').on( 'click', 'tr', function () {
var data = my_table.row( this ).data() ;
console.log(data[0]);
//do some ajax here
} );
}
然后,我使用了ajax.reload()
,而不是销毁数据表来启动新内容
创建表时出现问题。该错误特定于columnDefs中的行,“targets:[0],您能向我解释一下吗@Afdusko先生?未捕获的TypeError:$(…)。销毁不是一个函数我修复了我的问题谢谢您指出这一部分,而不是使用destoy()
我使用ajax.reload()
var my_table= jQuery('#my_table').DataTable({
"lengthChange": false,
"autoWidth": false,
"searching": true,
"ordering": false,
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"admin-ajax.php",
data:{action:"table_json"},
type:"POST"
},
"columnDefs":[
{
"targets":[0],
"orderable":false,
},
],
});
function call_thisTable(my_table,ParameterA,ParameterB){
jQuery('#my_table tbody').on( 'click', 'tr', function () {
var data = my_table.row( this ).data() ;
console.log(data[0]);
//do some ajax here
} );
}
jQuery(document).on("click",".click_button",function(){
var A = jQuery(this).attr("data-a");
var B = jQuery(this).attr("data-b");
$('#my_table').ajax.reload();
call_thisTable(my_table,A,B);
});