我使用
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)
http://datatables.net/api
更新
我想你正在使用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
]
}
);
}