2016-07-28 154 views
0

我有一个包含通知的页面,我希望每10秒刷新一次,但我不想重新加载整个页面,只是重新加载包含通知的div。通知本身在一个数据表中,当页面被加载时被初始化,但是当div被重新加载时,我一直无法让它重新初始化数据表。该div加载罚款,但只是一个普通的表。这里是我的代码:如何重新初始化Datatable?

$(document).ready(function() { 
    loadNotificationsTable(); 
}); 

setInterval(reloadNotificationsTable, 10000); 

function reloadNotificationsTable() { 
    $('#NotificationsTable').dataTable().fnDestroy(); 

    $("#notificationsPlaceholder").load(location.href + " #notificationsPlaceholder>*", ""); 

    $("#notificationsPlaceholder").ready(function() { 

     loadNotificationsTable(); 
    }); 
}; 

function loadNotificationsTable() { 
    $('#NotificationsTable').dataTable({ 
     ajax: "data.json", 
     "bLengthChange": false, 
     'iDisplayLength': 1000, 
     "bSort": false, 
     "bFilter": false, 
     "sDom": 'ft<"bottom"ilp>', 
     "bDestroy": false, 
     "bPaginate": false, 
     "bInfo":false 
    }); 
}; 

是否有人能够帮助我,并告诉我我做错了什么?

+0

也许你想在loadback在回调完成后重新初始化 –

回答

1

尝试重新初始化load后的数据表已经完成了回调:

$("#notificationsPlaceholder").load(location.href + " #notificationsPlaceholder>*",function(data){ 
    loadNotificationsTable(); 
}); 

而且这一点,因为你要替换表

https://legacy.datatables.net/ref#bDestroy

"bDestroy": true, 
添加到您的初始化代码
+0

完美地工作,谢谢! – necrofish666

+0

对不起,分心了,忘了。再次感谢。 – necrofish666

1

如果您需要定期刷新表格,请使用以下命令:

$('#table_id').DataTable().ajax.reload(); 

将此代码与setTimeout()函数一起使用,以定期刷新数据表。