无法将服务器端数据重新加载到表中
问题描述:
我试图在用户的操作(无论是添加还是删除)上重新加载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()时,在我的服务器上看不到任何数据请求。有任何想法吗?
答
问题是由事实,我并没有包括在jQuery选择一个“#”字符引起:
var table = $("#" + this.id + "-table").DataTable();
,而不是
var table = $(this.id + "-table").DataTable();
这就产生了一个DataTable对象上空的jQuery对象(hoorah for jQuery我想)。