无法将服务器端数据重新加载到表中

时间:2014-10-02 07:26:12

标签: jquery datatables

我正在尝试在用户执行操作时重新加载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()时,我在服务器上看不到任何数据请求。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题是由于我在jQuery选择器中没有包含“#”字符这一事实引起的:

var table = $("#" + this.id + "-table").DataTable();

而不是

var table = $(this.id + "-table").DataTable();

这导致了一个空的jQuery对象上的DataTable对象(我想是jQuery的hoorah)。