我正在尝试在用户执行操作时重新加载DataTable中的数据(无论是添加还是删除)。最初在加载页面时创建表,如下所示:
table.DataTable({
"processing": true,
"serverSide": true,
"drawCallback": function(settings) {
var api = this.api();
thisTable.DrawCallback(settings, api);
},
"ajax": {
"url": 'apps/app.py',
"data": function (d) {
d.Action = 'Table';
d.Table = thisTable.description.Table;
d.Name = thisTable.appDescription.Name;
d.Database = thisTable.appDescription.Database;
}
},
"columns": columns
});
最后,当用户添加新条目时,将执行以下代码:
var table = $(this.id + "-table").DataTable();
var data = new Object;
data["Action"] = "Add";
data["Database"] = this.appDescription.Database;
data["Table"] = this.description.Table;
data["Values"] = $(this.theForm).serializeArray();
$.ajax( {
dataType: "json",
url: "/apps/app.py",
data: data,
success: function(data) {
if (data["AddedRows"] > 0) {
// Refresh page...
table.clear();
table.ajax.reload();
table.draw();
}
// else?
},
error: function() {
alert("Unable to add data to table in database.");
// Check error on db?
}
} );
成功函数中的代码确实执行,因为我可以使用调试器进入函数,但在执行ajax.reload()时,我在服务器上看不到任何数据请求。有什么想法吗?
答案 0 :(得分:0)
问题是由于我在jQuery选择器中没有包含“#”字符这一事实引起的:
var table = $("#" + this.id + "-table").DataTable();
而不是
var table = $(this.id + "-table").DataTable();
这导致了一个空的jQuery对象上的DataTable对象(我想是jQuery的hoorah)。