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

GridJS数据加载报错:An error happened while fetching the data 求助

问题

测试GridJS基础功能时,页面加载、切换返回时频繁出现报错:"An error happened while fetching the data"。刷新或Ctrl+F5可临时解决,但问题十分异常。想知道是否有其他用户遇到过该问题,以及可行的优化方案。

使用的代码如下:

<link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />
<div id="thetable"></div>
<script src="https://unpkg.com/gridjs/dist/gridjs.umd.js"></script>

<script>
new gridjs.Grid({
    columns: [
        {
            name: '',
            formatter: (cell, row) => {
                return gridjs.html(
                    `<button class="btn btn-sm btn-outline-primary" onclick="location.href='/work/work_id/${row.cells[0].data}'"><span class="material-symbols-outlined">Edit</span></button>`
                );
            },
            sort: false
        },
        { 
            name: 'work_id',
            hidden: true
        },  
        "Client", "Matter", "Date", "Initials", "Task Performed", "Time", "Rate"
    ],
    search: true,
    sort: true,
    pagination: {
        limit: 5
    },

    data: () => [
        [null, "13", "ABC Corp", "Bankruptcy", "02/05/2023", "BAL", "Review financial documents", "2.5", "$300"],
        [null, "12", "123 LLC", "Trademark", "02/07/2023", "SPM", "Research trademark availability", "1.3", "$150"],
        [null, "14", "ABC Corp", "Bankruptcy", "02/10/2023", "BAL", "Prepare for client meeting", "1.8", "$300"],
        [null, "59", "XYZ Inc", "Employment", "02/13/2023", "SPM", "Review case documents", "2.2", "$250"],
        [null, "31", "123 LLC", "Trademark", "02/17/2023", "BAL", "Draft trademark application", ".9", "$150"],
        [null, "44", "ABC Corp", "Bankruptcy", "02/20/2023", "BAL", "Client meeting", "1.5", "$300"],
        [null, "74", "XYZ Inc", "Employment", "02/24/2023", "SPM", "Phone call with client", ".8", "$250"], 
        [null, "45", "123 LLC", "Trademark", "02/27/2023", "BAL", "Revise trademark application", ".7", "$150"],
        [null, "55", "ABC Corp", "Bankruptcy", "03/01/2023", "SPM", "Draft legal brief", "2.3", "$300"],
        [null, "23", "XYZ Inc", "Employment", "03/05/2023", "BAL", "Contract review", "1.1", "$250"]
    ]
    
}).render(document.getElementById("thetable"));
</script>

已查阅GridJS所有配置选项,未找到可解决该问题的设置。

解决方案

不少用户反馈过类似问题,主要和GridJS对数据加载的判断、DOM初始化时机有关,以下是几个可行的优化方案:

1. 静态数据直接传入数组,而非函数式返回

你当前用data: () => []的函数式写法,GridJS会默认按异步数据处理,在某些页面状态(如浏览器后退缓存)下,可能触发错误判断。直接传入静态数组即可避免:

data: [
    [null, "13", "ABC Corp", "Bankruptcy", "02/05/2023", "BAL", "Review financial documents", "2.5", "$300"],
    // ... 其他数据行
]

2. 确保DOM完全加载后再初始化Grid

如果脚本执行时#thetable元素还未渲染完成,会导致Grid初始化异常。把初始化代码包裹在DOM加载完成事件中:

document.addEventListener('DOMContentLoaded', function() {
    new gridjs.Grid({
        // 原有配置项不变
    }).render(document.getElementById("thetable"));
});

3. 处理页面切换时的实例冲突(SPA/浏览器后退场景)

如果是在单页应用或依赖浏览器后退缓存的场景下,可能出现Grid实例重复初始化的问题。可以在初始化前先销毁已有实例:

// 全局保存Grid实例
let gridInstance;

document.addEventListener('DOMContentLoaded', function() {
    // 销毁已有实例
    if (gridInstance) {
        gridInstance.destroy();
    }
    // 创建新实例
    gridInstance = new gridjs.Grid({
        // 原有配置项不变
    }).render(document.getElementById("thetable"));
});

4. 捕获错误并定位具体原因

添加错误监听事件,打印详细错误信息,帮助排查深层问题:

new gridjs.Grid({
    // 其他配置项
    onError: (error) => {
        console.error('GridJS加载错误:', error);
    }
}).render(document.getElementById("thetable"));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:15:01