在Laravel项目中,我正在使用DataTable JS(具有服务器端处理)来显示表。我想要一些想要使用DataTable的API的自定义功能,已经尝试了一段时间,但是我无法清除dataTable来插入新数据并重新绘制它。您能帮我吗?
这是我的JS代码的相关部分
初始化数据表
dt = $('#dataTable').DataTable({
'processing': true,
'serverSide': true,
'select': 'multiple',
'ajax': {
'url' :'{!! url('/') !!}/newOrderData',
'type': 'POST',
'headers': {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
},
'columns': [
{ 'data': 'id', 'name': 'id' },
{ 'data': 'name', 'name': 'name' },
{ 'data': 'area', 'name': 'area' },
{ 'data': 'estimate', 'name': 'estimate' },
],
"columnDefs": [
{ className: "orderId", "targets": [ 0 ] }
]
});
尝试清除数据并重新绘制新的
$('#areas').change(function(){
var areaId = $(this).val();
var token = "{{ csrf_token() }}";
dt.clear().draw();
$.post('{!! url('/') !!}/newOrderData',{area: areaId,_token:token}, function(newDataArray) {
dt.rows.add(newDataArray); // Add new data
dt.draw();
});
});
当更改事件处理程序被触发时,什么也没有发生,没有错误,该表显示一个处理标志,但所有内容保持不变。
我正在关注this question。但是该解决方案似乎对我不起作用。请帮忙。
答案 0 :(得分:0)
尝试使用此代码清除您的数据,
$('#areas').change(function(){
var areaId = $(this).val();
var token = "{{ csrf_token() }}";
var dt = $('#dataTable').DataTable(); //create new object of the datatable
dt.clear().draw();
$.post('{!! url('/') !!}/newOrderData',{area: areaId,_token:token}, function(newDataArray) {
dt.rows.add(newDataArray); // Add new data
dt.draw();
});
});
我也遇到了这个问题,该解决方案对我来说是有效的。
希望这对您有用。