You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AJAX更新或插入调用后刷新DataTable数据表?

如何在AJAX操作后刷新DataTable表格

要解决这个问题,我整理了两种实用方案,你可以根据自己的代码结构选择合适的方式:

方案一:让DataTable通过AJAX加载数据源(推荐)

这种方式最贴合DataTable的设计逻辑,后续刷新操作会非常简洁高效。

步骤1:修改DataTable初始化代码

把原来PHP直接渲染tbody的方式,改成让DataTable通过AJAX请求动态获取数据。在页面的JS代码里完成表格初始化:

$(document).ready(function() {
    // 初始化DataTable并配置AJAX数据源
    var catTable = $('#catTbl').DataTable({
        ajax: {
            url: '../processes/getLists.php', // 指向你的数据接口
            type: 'GET',
            dataSrc: 'data' // 对应后端返回JSON中的数据字段名
        },
        columns: [
            { data: 'id' }, // 和数据库返回的ID字段对应
            { data: 'title' } // 和数据库返回的Title字段对应
        ]
    });
});

步骤2:调整后端接口返回JSON格式

修改你的getLists.php,让它返回标准的JSON结构,而非直接输出HTML:

<?php
// 引入必要的数据库连接和类文件
include "../你的数据库连接文件.php";
include "../processes/getLists.php";

$process = new getLists();
$catData = $process->getCatForTbl(); // 假设该方法返回数组形式的分类列表

// 返回DataTable所需的JSON结构
echo json_encode([
    'data' => $catData
]);
?>

提示:要确保getCatForTbl()返回的数组中,每个元素都包含id和title键,和前端配置的columns对应上

步骤3:AJAX操作后刷新表格

在你的更新/插入操作的AJAX成功回调里,只需调用DataTable实例的ajax.reload()方法即可:

// 示例:AJAX更新分类的代码
$.ajax({
    url: '../processes/updateCat.php', // 你的更新接口
    method: 'POST',
    data: {
        id: 1,
        title: '更新后的分类标题'
    },
    success: function(response) {
        // 刷新DataTable,可选添加回调提示用户
        catTable.ajax.reload(function() {
            alert('分类已成功更新!');
        });
    }
});

方案二:保持原有PHP渲染方式,手动更新tbody

如果不想调整数据源加载逻辑,也可以通过重新获取表格HTML的方式实现刷新:

步骤1:抽取表格行的渲染逻辑

把原来getLists.php中getCatForTbl()输出的<tr>行逻辑单独抽成一个文件,比如getCatTblRows.php,这个文件只输出tbody里的行内容,不包含其他冗余标签。

步骤2:在AJAX成功后更新表格

在更新/插入的AJAX回调里,清空原有tbody内容,重新获取最新的行HTML并插入,最后通知DataTable重新绘制:

$.ajax({
    url: '../processes/updateCat.php',
    method: 'POST',
    data: { /* 你的更新数据 */ },
    success: function(response) {
        // 清空现有表格内容
        $('#catTbl tbody').empty();
        
        // 重新获取最新的表格行HTML
        $.get('../processes/getCatTblRows.php', function(rowsHtml) {
            // 插入新的行内容
            $('#catTbl tbody').html(rowsHtml);
            
            // 通知DataTable重新绘制表格
            $('#catTbl').DataTable().draw();
        });
    }
});

注意事项

  • 无论用哪种方案,都要确保DataTable的初始化代码放在$(document).ready()中,保证DOM加载完成后再执行
  • 如果用方案一,页面中的<tbody>可以留空,DataTable会自动填充数据
  • 使用ajax.reload()时,默认会保留当前分页、排序状态;如果想重置到第一页,可以传参数:catTable.ajax.reload(null, false)

内容的提问来源于stack exchange,提问作者Lizzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:54:50