cov*_*efe 87 jquery datatables jquery-datatables
我正在使用插件jQuery数据表并加载我在页面底部的DOM中加载的数据并以这种方式启动插件:
var myData = [
{
"id": 1,
"first_name": "John",
"last_name": "Doe"
}
];
$('#table').dataTable({
data: myData
columns: [
{ data: 'id' },
{ data: 'first_name' },
{ data: 'last_name' }
]
});
Run Code Online (Sandbox Code Playgroud)
现在.在执行某些操作后,我想使用ajax获取新数据(但不是在数据表中构建ajax选项 - 不要误解我!)并使用这些数据更新表.我怎么能用datatables API做到这一点?文档非常混乱,我找不到解决方案.任何帮助将非常感谢.谢谢.
cov*_*efe 162
解决方案:(注意:此解决方案适用于数据表版本1.10.4(目前)而不是旧版本).
澄清根据API文档(1.10.15),可以通过三种方式访问API:
DataTables的现代定义(上层驼峰案例):
var datatable = $( selector ).DataTable();
DataTables的遗留定义(较低的驼峰案例):
var datatable = $( selector ).dataTable().api();
使用new语法.
var datatable = new $.fn.dataTable.Api( selector );
然后像这样加载数据:
$.get('myUrl', function(newDataArray) {
datatable.clear();
datatable.rows.add(newDataArray);
datatable.draw();
});
Run Code Online (Sandbox Code Playgroud)
API参考:
https://datatables.net/reference/api/clear()
https://datatables.net/reference/api/rows.add()
https://datatables.net/reference/api/draw()
Vla*_*irs 28
您可以使用:
$('#table').dataTable().fnClearTable();
$('#table').dataTable().fnAddData(myData2);
Run Code Online (Sandbox Code Playgroud)
更新.是的当前文档并不是那么好,但如果你可以使用旧版本,你可以参考旧文档.
小智 6
这是旧数据表 1.9.4 的解决方案
var myData = [
{
"id": 1,
"first_name": "Andy",
"last_name": "Anderson"
}
];
var myData2 = [
{
"id": 2,
"first_name": "Bob",
"last_name": "Benson"
}
];
$('#table').dataTable({
// data: myData,
aoColumns: [
{ mData: 'id' },
{ mData: 'first_name' },
{ mData: 'last_name' }
]
});
$('#table').dataTable().fnClearTable();
$('#table').dataTable().fnAddData(myData2);
Run Code Online (Sandbox Code Playgroud)
小智 6
您需要销毁旧的数据表实例,然后重新初始化数据表
首先使用$ .fn.dataTable.isDataTable检查数据表实例是否存在
如果存在,则销毁它,然后像这样创建新实例
if ($.fn.dataTable.isDataTable('#dataTableExample')) {
$('#dataTableExample').DataTable().destroy();
}
$('#dataTableExample').DataTable({
responsive: true,
destroy: true
});
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,我没有使用内置的 ajax api 将 Json 提供给表(这是由于某些格式在数据表的渲染回调中很难实现)。
我的解决方案是在 onload 函数和处理数据刷新的函数(var table = null例如)的外部范围内创建变量。
然后我在加载方法中实例化我的表
$(function () {
//.... some code here
table = $("#detailReportTable").DataTable();
.... more code here
});
Run Code Online (Sandbox Code Playgroud)
最后,在处理刷新的函数中,我调用 clear() 和 destroy() 方法,将数据提取到 html 表中,并重新实例化数据表,如下所示:
function getOrderDetail() {
table.clear();
table.destroy();
...
$.ajax({
//.....api call here
});
....
table = $("#detailReportTable").DataTable();
}
Run Code Online (Sandbox Code Playgroud)
我希望有人觉得这很有用!
| 归档时间: |
|
| 查看次数: |
122368 次 |
| 最近记录: |