Javascript 具有动态数据的jQuery数据表
我有一个简单的消息传递系统,我使用jQuery/AJAX从数据库中检索消息并将其附加到表中。我想要对消息进行分页,所以我选择使用DataTables插件() 我在使用动态生成的数据时遇到问题。我还具有诸如“删除消息”之类的功能,该功能将删除消息,然后再次检索消息(刷新表)。我收到错误“无法重新初始化数据表” 这是我目前的代码:Javascript 具有动态数据的jQuery数据表,javascript,jquery,ajax,datatables,Javascript,Jquery,Ajax,Datatables,我有一个简单的消息传递系统,我使用jQuery/AJAX从数据库中检索消息并将其附加到表中。我想要对消息进行分页,所以我选择使用DataTables插件() 我在使用动态生成的数据时遇到问题。我还具有诸如“删除消息”之类的功能,该功能将删除消息,然后再次检索消息(刷新表)。我收到错误“无法重新初始化数据表” 这是我目前的代码: function getmessages(){ $.ajax({ type: "POST", url: "modules/ajax
function getmessages(){
$.ajax({
type: "POST",
url: "modules/ajaxgetmessages.php",
dataType: 'json',
cache: false,
})
.success(function(response) {
if(!response.errors && response.result) {
$("#tbodymessagelist").html('');
$.each(response.result, function( index, value) {
var messagesubject = value[3];
var messagecontent = value[4];
var messagetime = value[5];
var sendername = value[2];
var readstatus = value[7];
var messageid = value[8];
if (readstatus==0){
messageheader += '<tr><td><input type="checkbox" class="inboxcheckbox input-chk"></td><td class="sendername"><b>'+sendername+'</b></td><td class="messagesubject"><b>'+messagesubject+'</b></td><td><b>'+messagetime+'</b></td><td class="messageid" style="display:none">'+messageid+'</td><td class="readstatus" style="display:none">'+readstatus+'</td><td class="messagecontent" style="display:none"><b>'+messagecontent+'</b></td></tr>';
} else {
messageheader += '<tr><td><input type="checkbox" class="inboxcheckbox input-chk"></td><td class="sendername">'+sendername+'</td><td class="messagesubject">'+messagesubject+'</td><td>'+messagetime+'</td><td class="messageid" style="display:none">'+messageid+'</td><td class="readstatus" style="display:none">'+readstatus+'</td><td class="messagecontent" style="display:none"><b>'+messagecontent+'</b></td></tr>';
}
});
$("#tbodymessagelist").html(messageheader);
$('#tblinbox').DataTable({
"paging": true,
"ordering": false,
"info": false
});
} else {
$.each(response.errors, function( index, value) {
$('input[name*='+index+']').addClass('error').after('<div class="errormessage">'+value+'</div>')
});
}
});
}
函数getmessages(){
$.ajax({
类型:“POST”,
url:“modules/ajaxgetmessages.php”,
数据类型:“json”,
cache:false,
})
.成功(功能(响应){
如果(!response.errors&&response.result){
$(“#tbodymessagelist”).html(“”);
$.each(response.result、函数(索引、值){
var messagesubject=值[3];
var messagecontent=值[4];
var messagetime=值[5];
var sendername=值[2];
var readstatus=值[7];
var messageid=值[8];
如果(readstatus==0){
messageheader+=''+sendername+''+messagesubject+''+messagetime+''+messageid+''+readstatus+''+messagecontent+'';
}否则{
messageheader+=''+sendername+''+messagesubject+''+messagetime+''+messageid+''+readstatus+''+messagecontent+'';
}
});
$(“#tbodymessagelist”).html(messageheader);
$('#tblinbox')。数据表({
“分页”:正确,
“命令”:错误,
“信息”:错误
});
}否则{
$.each(response.errors、函数(索引、值){
$('input[name*='+index+']')。addClass('error')。在(''+value+'')之后
});
}
});
}
那么,从本质上讲,如何在删除消息或其他函数后对表进行更改,然后“刷新”表呢?它还显示
在页脚中显示0个条目中的0到0个
,即使其中有条目。在创建新实例之前,您必须销毁datatable
`
$('#tblinbox').DataTable.destroy();
$('#tblinbox').empty();
`
$('#tblinbox').DataTable.destroy();
$('tblinbox').empty();
尝试
destroy:true
数据表中有ajax选项,因此您可以让数据表完成所有繁重的工作,分页/排序,这样您就不再需要将所有行作为一个整体加载。从长远来看,当有很多信息时,这将是一件好事。