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

首次在项目中集成w2ui Grid,请求指导从API获取数据

解决w2ui Grid加载远程数组格式数据的问题

嘿,我来帮你搞定这个问题!w2ui Grid默认对API返回的JSON格式有特定要求,而你的接口返回的是纯数组,这就是Grid无法正确渲染的核心原因。下面给你两种可行的解决方案:

方案1:修改API返回格式(推荐,如果你有权限调整后端的话)

w2ui Grid期望的标准响应格式是一个包含records字段的对象,最好还带上total字段(表示总记录数,方便后续分页功能)。你可以让后端把返回的数据改成这样:

{
  "total": 2,
  "records": [
    {"Key":"12;2TgBAACHBg==10;20897568710;","id":6,"amount":"50","pay_date":"2018-05-17T00:00:00Z","applicant_id":116,"paid_by":"sami","pay_type":"cash","ref":"NSC170621001","name":"Sekyi Quainoo"},
    {"Key":"12;2TgBAACHBw==10;20897569590;","id":7,"amount":"70","pay_date":"2018-05-17T00:00:00Z","applicant_id":119,"paid_by":"nii","pay_type":"cash","ref":"NSC170725119","name":"Adwoa Sam"}
  ]
}

改完之后,你原来的Grid代码不需要做任何调整,就能直接加载并展示数据了。

方案2:前端处理数据格式(如果无法修改后端)

如果没法调整API,我们可以在Grid的onLoad回调里把返回的数组转换成w2ui需要的格式。另外还要注意你原代码里的两个小问题:

  • 列的caption和field不匹配(比如ref的caption写的是First Name,这和实际字段含义不符)
  • 列的size总和超过了100%(30%+30%+30%+40%=130%),会导致布局异常

修正后的代码如下:

<script type="text/javascript">
$(function () {
  $('#grid').w2grid({
    name: 'grid',
    url:'http://api/payments.php',
    columns: [
      { field: 'name', caption: 'Name', size: '30%' },
      { field: 'ref', caption: 'Reference', size: '30%' },
      { field: 'pay_date', caption: 'Payment Date', size: '25%' },
      { field: 'amount', caption: 'Amount', size: '15%' }
    ],
    onLoad: function(event) {
      // 将API返回的数组包装成w2ui期望的格式
      event.response = {
        total: event.response.length,
        records: event.response
      };
    }
  });
});
</script>

这个回调会在Grid加载完数据后触发,我们把原始的数组响应重新包装成包含total和records的对象,这样Grid就能正确识别并渲染数据了。

另外还要确认一下:如果你的页面和API不在同一个域名下,需要后端配置CORS允许跨域请求,否则会出现跨域错误哦。

内容的提问来源于stack exchange,提问作者Theodulph Sekyi Quainoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:05