2014-10-02 84 views
0

我试图在用户的操作(无论是添加还是删除)上重新加载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

问题是由事实,我并没有包括在jQuery选择一个“#”字符引起:

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

,而不是

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

这就产生了一个DataTable对象上空的jQuery对象(hoorah for jQuery我想)。

相关问题