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

使用JavaScript Fetch从Flask取数据时Bootstrap5表格无数据问题

表格显示“No data available in Table”的原因及修复方案

可能的原因:

  • 表格结构不规范:Bootstrap 5的表格需要包含<tbody>元素,你当前的表格只有<thead>,没有<tbody>,新增的数据行直接挂载到<table>下,浏览器无法正确识别为数据行,因此显示空表格提示。
  • Fetch请求未处理错误:代码没有捕获请求失败的场景(比如后端接口404、500错误,跨域问题),如果请求失败,数据无法返回,表格自然无内容。
  • 后端接口返回异常:Flask的/employees接口可能未返回合法的JSON数组,比如返回单个对象、非数组格式,或者字段名不匹配(比如用Id而非id),导致forEach无法遍历数据。

修复后的代码:

HTML部分(补全tbody):

<table id="dataTable" class="table table-bordered">
  <thead>
    <tr>
      <th>ID</th>
      <th>Name</th>
    </tr>
  </thead>
  <tbody id="tableBody"></tbody>
</table>

JavaScript部分(完善错误处理与数据校验):

const tableBody = document.getElementById('tableBody');
fetch('employees')
  .then(response => {
    // 校验HTTP响应状态
    if (!response.ok) {
      throw new Error(`请求错误: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    // 确保返回的是数组格式
    if (!Array.isArray(data)) {
      console.error('后端返回数据不是数组');
      tableBody.innerHTML = '<tr><td colspan="2">数据格式错误</td></tr>';
      return;
    }
    // 遍历渲染数据行
    data.forEach(employee => {
      const row = document.createElement('tr');
      row.innerHTML = `
        <td>${employee.id ?? '无'}</td>
        <td>${employee.name ?? '无'}</td>
      `;
      tableBody.appendChild(row);
    });
    // 如果数组为空,自定义提示
    if (data.length === 0) {
      tableBody.innerHTML = '<tr><td colspan="2">暂无员工数据</td></tr>';
    }
  })
  .catch(error => {
    console.error('数据获取失败:', error);
    tableBody.innerHTML = '<tr><td colspan="2">数据加载失败,请稍后重试</td></tr>';
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:55:45