You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何消除DataTable因AJAX加载延迟残留的“No data available in table”提示?

Fixing "No data available in table" Persisting After AJAX Data Load in DataTables

我太懂这个糟心的问题了——AJAX请求慢悠悠的,DataTables先一步把空表格渲染出来,等数据终于加载完成塞进表格里,那烦人的"No data available in table"提示却死活不消失。别慌,这里有几个实用的解决思路,帮你搞定这个问题:

方法1:用DataTables原生AJAX配置(最推荐)

其实DataTables本身就内置了异步数据加载的能力,完全没必要自己单独写AJAX请求。它会自动处理数据加载的整个流程,包括等待状态、数据填充,根本不会出现残留的空数据提示。

示例代码:

$('#your-table-id').DataTable({
  ajax: {
    url: 'your-api-endpoint-url',
    type: 'GET', // 根据你的接口需求换成POST
    dataSrc: '' // 如果接口返回的是直接的数组就填空;要是数据嵌套在`data`字段里,就填'data'
  },
  columns: [
    { data: 'your-column-field-1' },
    { data: 'your-column-field-2' },
    // 依次对应你表格的每一列字段
  ]
});

用这种方式,DataTables会全程接管数据加载,数据回来后自动渲染表格,还能显示加载中的状态,完美避开空提示残留的问题。

方法2:手动控制表格初始化与数据刷新

如果必须自己写AJAX请求,那可以通过以下步骤解决:

  • 初始化表格时先把空数据提示设为空
  • 数据加载完成后,手动更新表格并刷新
  • 保险起见,手动隐藏可能残留的提示元素

示例代码:

// 先初始化一个空表格,关闭默认的空数据提示
const tableInstance = $('#your-table-id').DataTable({
  language: {
    emptyTable: '' // 把空表提示文本清空
  }
});

// 执行你的AJAX请求
$.ajax({
  url: 'your-api-endpoint-url',
  type: 'GET',
  success: function(fetchedData) {
    // 清空表格现有数据(如果需要)
    tableInstance.clear();
    // 把新数据添加到表格
    tableInstance.rows.add(fetchedData);
    // 刷新表格,让新数据显示出来
    tableInstance.draw();
    
    // 最后手动隐藏可能残留的空提示元素(双保险)
    $('#your-table-id').next('.dataTables_empty').hide();
  }
});

这种方式通过提前禁用空提示,再配合表格的draw()方法刷新,基本能解决残留问题。

方法3:等AJAX完成后再初始化表格

另一种思路是,先不初始化DataTables,等AJAX请求拿到数据、把数据填充到表格的HTML结构里之后,再初始化DataTables。这样从一开始表格就有数据,根本不会触发空数据提示。

示例代码:

// 先执行AJAX请求
$.ajax({
  url: 'your-api-endpoint-url',
  type: 'GET',
  success: function(fetchedData) {
    // 把数据手动填充到表格tbody
    const tableBody = $('#your-table-id tbody');
    fetchedData.forEach(item => {
      const rowHtml = `<tr>
        <td>${item.column1}</td>
        <td>${item.column2}</td>
      </tr>`;
      tableBody.append(rowHtml);
    });
    
    // 现在再初始化DataTables
    $('#your-table-id').DataTable();
  }
});

这种方法的缺点是,如果AJAX请求耗时较长,用户会先看到没有样式的原始表格,直到DataTables初始化完成。适合数据结构简单、对加载体验要求不是极高的场景。

内容的提问来源于stack exchange,提问作者Engr. Arda

火山引擎 最新活动