通过AJAX将数据附加到jQuery数据表并没有使用数据表的分页和功能


Appending data to jQuery data-tables via AJAX is not using data-tables pagination and functionality

http://www.datatables.net/

jQuery datatables是一个添加过滤器、分页和搜索输入的插件。我一直在使用它们和我的Laravel应用程序一起将数据放入,它运行得很好。

我现在添加了一个与数据表分离的下拉过滤器,并添加了一些jQuery代码,如下所示:

$('.dropdownselect').change(function() {
    $('.table').find('tr').remove();
    $.post('/schedules', { value: $(this).val() }, function(result) {
        $.each(result, function(k, v) {
            $('.table-body').append('<tr><td>' + v.name + '</td></tr>');
        });
    });
});

它只是在更改时删除值,并将schedules路由返回的新值附加到表中。实际上还有4个<td>,但为了简化起见,我只包含了一个。

当使用上面的代码时,它不维护datatables插件的功能。

为什么会这样?有办法绕过它吗?或者更好的方法?

仅仅通过AJAX请求向DOM添加新行不会通知DataTables对象容器这些更改。您需要使用Datatable.row.add()来插入行,然后重新绘制表,以直观地更新显示的表,从而考虑到这些新数据。

请尝试以下操作。

$('.dropdownselect').change(function() {
    $('.table').find('tr').remove();
    var t = $('.table').DataTable();
    $.post('/schedules', { value: $(this).val() }, function(result) {
        $.each(result, function(k, v) {
            t.row.add( [v.name, v.otherParam, v.anotherParam] );
        });
        t.draw();
    });
});