Javascript datatable jquery无法重新初始化datatable
我使用datatable jQuery插件将数据填充到表中。当用户按下按钮时,我需要从ajax调用中获取数据,并将数据填充到表中 我的ajax调用代码如下:Javascript datatable jquery无法重新初始化datatable,javascript,jquery,datatable,Javascript,Jquery,Datatable,我使用datatable jQuery插件将数据填充到表中。当用户按下按钮时,我需要从ajax调用中获取数据,并将数据填充到表中 我的ajax调用代码如下: function getJsonReport() { var startDate = $('#start_date').val(); var endDate = $('#end_date').val(); $.get('MonthlyReportAjax', {star
function getJsonReport() {
var startDate = $('#start_date').val();
var endDate = $('#end_date').val();
$.get('MonthlyReportAjax', {startDate : startDate , endDate : endDate}, function(responseText) {
var tableBody="";
for(var x = 0 ; x < responseText["monthRecord"].length ; x++){
tableBody += "<tr><td>"+ responseText["monthRecord"][x].date +"</td>"+
"<td>"+ responseText["monthRecord"][x].newSearch +"</td>"+
"<td>"+ responseText["monthRecord"][x].newSubscribers +"</td>"+
"<td>"+ responseText["monthRecord"][x].pm12 +"</td>"+
"<td>"+ responseText["monthRecord"][x].pm3 +"</td>"+
"<td>"+ responseText["monthRecord"][x].pm6 +"</td>"+
"<td>"+ responseText["monthRecord"][x].newAdds +"</td>"+
"</tr>"
}
$('#dailyTableBody').html(tableBody);
$('#tableID').DataTable();
});
}
函数getJsonReport(){
var startDate=$(“#开始日期”).val();
var endDate=$('#end_date').val();
$.get('MonthlyReportAjax',{startDate:startDate,endDate:endDate},函数(responseText){
var tableBody=“”;
对于(var x=0;x如果您打算保留现有的实现,那么以下方法将起作用。您遇到的问题是,错误消息指出:您无法在已有数据表的地方初始化新的
数据表,因此您必须销毁它并重新创建它,如下所示
DataTables API调用是您所需要的
示例(未测试):
$('#submit').on( 'click', function () {
var table = $('#myTable').dataTable() || false;
if (table) {
table.api().destroy();
}
getJsonReport(); // Run your update function
});
注意dataTable
部分。调用api()
时需要此语法
您的getJsonReport()
函数将保持不变。实际上,我会在DataTable上使用一个不同的设计模型,该模型本身包含DataTable的所有逻辑,然后专门使用API进行任何更新。这需要重构表的生成方式,所以我不想包含它,但是如果您想了解我对数据表的方法(我已经使用这个库多年了,直到我们使用Angular;),我很乐意提供它
希望这能有所帮助。下面的代码未经测试,但它应该会向您展示我在上面的评论中所建议的内容,并且需要进行一些调整才能为您工作。它让DataTable完成所有的升降。
它替换getJsonReport,在加载时初始化,并使用go按钮启动数据获取
$(document).ready(function (){
$("#tableID").DataTable({columns:[{data:"date"}, {data:"newSearch"}, {data:"newSubscribers"}, {data:"pm12"}, {data:"pm3"}, {data:"pm6"}, {data:"newAdds"}],
deferLoading:0,
dom""Bt",
serverSide:true,
buttons:[{text:"Go", action: function(){
$("#tableID").DataTable().ajax.reload();
}}],
ajax: {type:"get",
dataSrc:"",
url:'MonthlyReportAjax',
data: function () {return {startDate : $('#start_date').val() , endDate : $('#end_date').val()}
}
}
});
})
在java脚本中放入此代码
$('#idTable').dataTable({
destroy: true
});
我们需要在重新初始化之前销毁该表吗?另一个问题是,当第一次加载表时,它没有正确分页。那么,如何做到这一点呢?您能为我提供您的datatable方法吗。示例代码?您正在使用字符串创建表,然后使用DataTable。您应该将数据传递给datatable,让它完成全部工作。我可以提供一个示例使用场景,但使用需要您在呈现页面时创建HTML表,并通过DataTables运行AJAX调用。它还将使用更多的DataTable选项。很遗憾,我不在办公桌旁,但我明天会在这里提供。好的,谢谢。我会等的。