DataTable不会更新内容

时间:2016-10-06 14:48:05

标签: javascript jquery datatable

我使用的是jQuery DataTable插件,但我遇到了一个问题,在我的页面中我可以使用AJAX和JavaScript编辑特定行的信息,我的功能是这样的:

$.ajax ... code 
success function... code and finally
DrawMyTable();

DrawMyTable是另一个AJAX,代码是这样的:

$.ajax ... code (Select * from and that stuff)
   var html = "";
   var html += "<tr>";
   var html += "<td>";
   var html += ... Then I do this for all the result from the Select Query;
   var html += "</td>";
   var html += "</tr>"; and finally
   $('#MyTable').html(html); 
   $('#MyTable').DataTable().destroy(); //Looking here for answer I find that this could be a solution because before facing this issue I had the "cannot reinitialise datatable" error.
   $('#MyTable').DataTable();

编辑#2

$('#MyTable').DataTable().destroy(); 
This have an error, the correct function is $('#MyTable').dataTable().destroy();
However with this I get the same issue, the table now is uptated but shows all the records.

编辑:

我尝试使用此功能(此表更新但显示我的所有记录,而不是仅显示10,25或用户选择的任何内容):

$("#MyTable").DataTable().fnDestroy();
$("#MyTable").DataTable();

此:

$('#MyTable').DataTable({
            bRetrieve: true
Or
$('#MyTable').DataTable({
            destroy: true

但是我得到了相同的结果,我的表​​按预期加载,但是当我编辑某些内容(编辑某些东西应该重新加载表格)时,我的成功按钮出现了但是我的表格没有改变,直到我重新加载页面,并且我的表格分页也重新启动(例如在开头我每页显示10条记录,但是当我调用我的编辑功能时,表格会显示所有记录)我做错了什么?怎么能解决这个问题呢?

PD。我无法在DataTable中使用AJAX选项,因为我需要插入其他来自ajax调用的信息。

编辑#3

这是My full JavaSript Code

PD2。我的web服务很简单,只是一些SQL查询。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你会显示一个DataTable ...
然后你想使用ajax为它添加一行。

我这样做的方法是push通过ajax获取的新值到DataTable用于draw的数据。

数据需要是一个包含每行数组的数组......像这样:

var myTable;
var data;
$(document).ready(function() {
    data = [ ["Text for cell#1 - row 1","Text for cell#2 - row 1","Text for cell#3 - row 1"]
             ["Text for cell#1 - row 2","Text for cell#2 - row 2","Text for cell#3 - row 2"]
             ["Text for cell#1 - row 3","Text for cell#2 - row 3","Text for cell#3 - row 3"]
           ];

    myTable = $('#myTable').DataTable({
        data:data
    });

    // Draw the table
    myTable.draw();
} );

所以之后......在ajax成功回调中,我会从结果中创建一个这样的数组:
(您可能必须使用循环来正确格式化)

var newData = ["Text for cell#1 - row 4","Text for cell#2 - row 4","Text for cell#3 - row 4"]

然后pushdata数组并重新绘制表格。

data.push(newData);
myTable.draw();