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

Gijgo Grid数据绑定问题:Ajax调用无响应及CRUD后不刷新

解决Gijgo Grid的两个常见问题:CRUD后不刷新&Ajax绑定失败

嘿,我来帮你搞定这两个Gijgo Grid的问题,都是日常开发里容易碰到的坑!

一、CRUD操作后网格无法自动刷新

用HTML助手绑定表格做CRUD时,Gijgo Grid默认不会自动重新加载数据——因为初始化时它是基于当前DOM里的静态数据渲染的。解决办法很简单:在每个CRUD操作的成功回调里手动触发网格刷新。

举个具体的例子,假设你用内置的编辑/新增/删除功能,可以这么配置:

$("#grid").grid({
    dataSource: "/your-data-api",
    columns: [
        { field: "ID", width: 56 },
        { field: "Brand", sortable: true },
        { field: "Model", sortable: true },
        { 
            tmpl: "<span class='material-icons gj-cursor-pointer'>edit</span>", 
            width: 64,
            events: {
                "click": function(e) {
                    $("#grid").grid("edit", $(this).data("id"));
                }
            }
        }
    ],
    // 新增/保存后的回调
    save: function(e, data) {
        return $.ajax({
            url: "/your-save-api",
            method: "POST",
            data: data
        }).done(function() {
            // 关键:保存成功后刷新网格
            $("#grid").grid("refresh");
        });
    },
    // 删除后的回调
    delete: function(e, data) {
        return $.ajax({
            url: "/your-delete-api",
            method: "POST",
            data: data
        }).done(function() {
            // 删除成功后刷新网格
            $("#grid").grid("refresh");
        });
    }
});

如果是你自己写的自定义CRUD弹窗,逻辑也是一样:在Ajax请求成功后调用$("#grid").grid("refresh"),它会重新从数据源拉取数据并渲染。

二、Ajax调用Action无法完成数据绑定

这个问题通常是因为数据格式不匹配,或者没有正确触发网格的加载方法。你需要注意这几点:

1. 确保Ajax返回的数据格式符合要求

Gijgo Grid支持两种数据格式:

  • 纯JSON数组(适合无分页场景):[{"ID":1,"Brand":"Toyota","Model":"Camry"}, ...]
  • 带分页信息的对象(适合分页场景):{"total": 100, "data": [{"ID":1,...}, ...]}

2. 正确在Ajax回调里加载数据

先初始化网格(可以先空着),然后在Ajax成功后调用load方法注入数据:

// 第一步:初始化网格,配置列信息
$("#grid").grid({
    columns: [
        { field: "ID", width: 56 },
        { field: "Brand", sortable: true },
        { field: "Model", sortable: true },
        { 
            tmpl: "<span class='material-icons gj-cursor-pointer'>edit</span>", 
            width: 64
        }
    ]
});

// 第二步:Ajax拉取数据并加载到网格
$.ajax({
    url: "/your-action-url",
    method: "GET",
    dataType: "json",
    success: function(response) {
        // 如果是纯数组,直接传入
        $("#grid").grid("load", response);
        
        // 如果是带分页的对象,要传入data属性
        // $("#grid").grid("load", response.data);
        // 要是需要分页,初始化网格时记得加上pagination: true
    },
    error: function(xhr) {
        console.log("数据加载失败:", xhr.responseText);
    }
});

3. 检查字段匹配

网格的field属性必须和返回的JSON对象的属性名完全一致(大小写敏感!),比如你列里写的是Brand,返回的数据里就不能是brand,否则会绑定失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:37:44