我使用
Datatables,并在页面上使用AJAX刷新表的按钮。要清楚表格是不是使用ajax的数据源,我们只是在需要的时候使用ajax进行刷新。 Ajax正在刷新表中包含的div。我知道我丢失了分页按钮和过滤功能,因为表需要重新绘制,但我不知道如何将它添加到表初始化代码中。
数据代码
var oTable6; $(document).ready(function() { oTable6 = $('#rankings').dataTable( { "sDom":'t<"bottom"filp><"clear">',"bAutoWidth": false,"sPaginationType": "full_numbers","aoColumns": [ { "bSortable": false,"sWidth": "10px" },null,null ] }); });
这是ajax代码
$("#ajaxchange").click(function(){ var campaign_id = $("#campaigns_id").val(); var fromDate = $("#from").val(); var toDate = $("#to").val(); var url = 'http://domain.com/account/campaign/ajaxrefreshgrid?format=html'; $.post(url,{ campaignId: campaign_id,fromdate: fromDate,todate: toDate},function( data ) { $("#ajaxresponse").html(data); }); });
我试过这个,但是没有办法
"fnDrawCallback": function() { function( data ) { $("#ajaxresponse").html(data); }; },
解决方法
看起来好像可以使用API函数
>清除表(fnClearTable)
>添加新数据到表(fnAddData)
>重绘表(fnDraw)
更新
我想你正在使用DOM Data Source(服务器端处理)生成你的表。我没有真的得到这个,所以我以前的答案是不会奏效的。
要使其工作而不重写服务器端代码:
您需要做的是完全删除旧表(在dom中),并将其替换为ajax结果内容,然后重新初始化datatable:
// in your $.post callback: function (data) { // remove the old table $("#ajaxresponse").children().remove(); // replace with the new table $("#ajaxresponse").html(data); // reinitialize the datatable $('#rankings').dataTable( { "sDom":'t<"bottom"filp><"clear">',"aoColumns": [ { "bSortable": false,null ] } ); }