首次在项目中集成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
相关产品推荐
相关产品推荐

