解决layui的table插件无法多层级获取json数据的问题

对于layui的table插件无法多层级获取json数据的解决方法,版本:2.2.6

根据官方文档 你接口返回的数据格式,遵循 response 对应的字段名称。

默认的格式为如下:

{
code: 0,//数据状态的字段名称,默认:code
msg: “”, //状态信息的字段名称,默认:msg
count: 1000,//数据总数的字段名称,默认:count
data: []//数据列表的字段名称,默认:data
}

那么当后台返回的数据为如下格式时:就无法直接获取到“list”和“total”了

{“status”:0,
“msg”:”超级管理员查询成功”,
“data”:{
“pageNum”:1,
“pageSize”:10,
“size”:2,
“total”:2,
“list”:[
{“phone”:”13713596448”,”username”:”旺”,”passwd”:”1”,”usegrant”:”0”,”leader”:”“,”chancecount”:”1000”,”createtime”:1528369281000,”updatetime”:1528369285000,”usecount”:”0”},
{“phone”:”18038060732”,”username”:”彬”,”passwd”:”1”,”usegrant”:”0”,”leader”:”“,”chancecount”:”100”,”createtime”:1528422270000,”updatetime”:1528422270000,”usecount”:”0”}
]

解决方案:

1. 最直接的方法是叫后台人员直接改为官方文档的方式

2. 先通过ajax获取到数据,然后通过data属性进行赋值,当涉及到分页时,代码会比较冗余;

3.通过url属性赋值,则在table源文件中 M.prototype.page方法下添加以下代码:

var multilevel=function (data,list) {
  var d = data;
  for (var i in list){
    d =d[list[i]];
  }
  return d
};
var renderResponse=function (data) {
 var statusNameLsit=r.statusName.split("."),
   msgNameLsit=r.msgName.split("."),
   countNameLsit=r.countName.split("."),
   dataNameLsit=r.dataName.split(".");
 var dataTemp={};
 dataTemp[r.statusName]=multilevel(data,statusNameLsit);
 dataTemp[r.msgName]=multilevel(data,msgNameLsit);
 dataTemp[r.countName]=multilevel(data,countNameLsit);
 dataTemp[r.dataName]=multilevel(data,dataNameLsit);

 return dataTemp;
};

在M.prototype.page中ajax请求成功函数success里添加以下代码:

typeof renderResponse === 'function' && (t = renderResponse(t));

使用时:在response属性中用.来分割层级,代码如下:

response: {
  statusName: 'status' //数据状态的字段名称,默认:code
  ,statusCode: 0 //成功的状态码,默认:0
  ,msgName: 'msg' //状态信息的字段名称,默认:msg
  ,countName: 'data.total' //数据总数的字段名称,默认:count
  ,dataName: 'data.list' //数据列表的字段名称,默认:data
}

以上这篇解决layui的table插件无法多层级获取json数据的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 对layui中table组件工具栏的使用详解

    layui工具栏 第一步:在table中引入table,在table控件下加入: fixed:'right',title:'操作',width:"28%",align:'center',toolbar:"#barlist" 第二步:在table标签中加入以下js代码: <script type="text/html" id="barlist"> <!--<a class="layui-btn

  • Layui数据表格 前后端json数据接收的方法

    先上效果图: 前端数据表格: <div class="x-body"> <%-- 数据表格 --%> <table class="layui-table" lay-data="{ id:'test', url:'/menu/page', page:true, limits: [10,20,50], //每页条数的选择项,默认:[10,20,30,40,50,60,70,80,90] limit: 10, //每页默认显示的数量

  • layui-table表复选框勾选的所有行数据获取的例子

    项目需求,可以用复选框勾选项目进行提交,如下表 <table class="layui-table" lay-data="{url:'******', id:'test3'}" lay-filter="test3"> <thead> <tr> <th lay-data="{type:'checkbox'}">ID</th> <th lay-data="

  • layui异步加载table表中某一列数据的例子

    layui中table加载数据时 如果数据存放在不同数据表中 那样一个请求拼接每行表格数据 然后统一返回 太慢 //页面加载时请求 另一张表的数据 var slotGroup; admin.req({ url: '请求地址' , method: 'POST' , dataType: "json" , async: false , success: function (res) { slotGroup = res.data; console.log(slotGroup) } }); ta

  • layui 对table中的数据进行转义的实例

    方法一 通过done回调进行遍历: //方法级渲染 table.render({ id: 'demoList', elem: '#demoList' , url: 'showDemoList' , cols: [[ {checkbox: true, fixed: true, width: '10%'} , {field: 'id', title: '编号', width: '15%', sort: true} , {field: 'pipe_id', title: '机构ID', width:

  • Layui table field初始化加载时进行隐藏的方法

    layui应该是现在用的比较多的前端框架了,尤其是layui.table数据表格非常强大. 在很多时候,我们需要从数据库中拿到记录的id,但是我们又不希望在页面上展现,所以需要对一些字段进行隐藏. 看了网上很多的教程,各种对field进行隐藏,通过display:none等常规手段,虽然列是隐藏了,但是整个表格的展现却出了问题. 今天仔细看了文档,原来layui中已经封装了field隐藏的方法: 用法: {field:'id',title:'ID' ,hide:true},直接在fieId中,使

  • layui 关闭open弹出框 刷新table表格页面的方法

    如下所示: 保存后刷新table表格 源码 //弹出框 layer.open({ type: 2, shadeClose: true, shade: 0.3, maxmin: true, area: ['80%', '95%'], title: '', content: '', end: function() { //刷新页面, location.reload(); }, }); 效果图 以上这篇layui 关闭open弹出框 刷新table表格页面的方法就是小编分享给大家的全部内容了,希望能给

  • 关于Layui Table隐藏列问题

    layui没有提供Table隐藏列的功能(只是写这个文档的时候没有提供). 第一步:获取Layui的TableBox Jquery对象 var _table_box = $(this._table_elem).next().find(".layui-table-box"); this._table_elem 是指的Table标签的ID layui-table-box 是layui的类名 第二步:将需要隐藏的列添加 display:none 的样式 : _table_box.find(&

  • 解决layui的table插件无法多层级获取json数据的问题

    对于layui的table插件无法多层级获取json数据的解决方法,版本:2.2.6 根据官方文档 你接口返回的数据格式,遵循 response 对应的字段名称. 默认的格式为如下: { code: 0,//数据状态的字段名称,默认:code msg: "", //状态信息的字段名称,默认:msg count: 1000,//数据总数的字段名称,默认:count data: []//数据列表的字段名称,默认:data } 那么当后台返回的数据为如下格式时:就无法直接获取到"l

  • 解决layui中table异步数据请求不支持自定义返回数据格式的问题

    使用版本 layui-v2.3.0 修改: 打开layui中table.js源码 在 Class.prototype.pullData 这个方法定义内部 //获得数据 Class.prototype.pullData = function(curr, loadIndex){ var that = this ,options = that.config ,request = options.request ,response = options.response ,sort = function(

  • 基于layui的table插件进行复选框联动功能的实现方法

    实际项目功能: 给员工账号进行分配权限(增加权限,修改权限) 实现思路: 用表格展示权限列表–>勾选分配该账号的权限–>调用接口 出现的问题: 因为某些权限之间是有关联的,比如: " 查看材料 " 和 " 修改材料 " ,这两个权限是有联系的,当你勾选 " 修改材料 " 权限的时候,那么, " 查看材料 " 权限也要勾选上,当你取消勾选 " 查看材料 "权限的时候," 修改材料 &qu

  • jQuery通过ajax方法获取json数据不执行success的原因及解决方法

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法: 1)键名称:用双引号括起: 2)字符串:用双引号括起: 3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号! 2.jQuery中ajax使用json数据类型总是跳过success执行error语句 执

  • jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析

    本文实例讲述了jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="h

  • Layui之table中的radio在切换分页时无法记住选中状态的解决方法

    情景描述 Layui数据表格中用到了表单元素radio,在当前页面选中radio状态,并同步更新到保存表格中所有的数据的数组中(获取表格中的所有数据并保存到数组中),再点击分页组件中的下一页.上一页.跳转按钮进行切换另外一个页面,然后在切换回之前的页面,会发现在以前页面上radio状态全部恢复默认了,我们当然是希望能保存住前一页radio的选中状态. 我写项目遇到的一个的情况:在第一页选中的radio的状态,点击下一页按钮切换到第二页,然后再点击上一页切换会第一页,第一页中的radio状态就恢复

  • 解决layui数据表格table的横向滚动条显示问题

    加上这段样式代码就可以解决了: <link type="text/css" rel="stylesheet" href="layui/css/layui.css" rel="external nofollow" /> <style> body{overflow-y: scroll;} /* 禁止刷新后出现横向滚动条 */ </style> ps:这个问题fly社区给出的解释是:table 列

  • 解决layui table表单提示数据接口请求异常的问题

    问题一:直接拿别人的文件放在本地打开 如下图 原因:这是提示"交叉源请求仅支持协议方案:HTTP.数据.Chrome.Chrome扩展.HTTPS." 也就是你不能用本地文件打开,本地打开是file:///C:/Users/Administrator/Desktop/git/layui_table1.html 可以在本地服务器上展示没有问题 http://localhost/git/layui_table1.html 问题二:返回数据格式不符合要求(经常是这样的) 输出格式为 { &q

  • 解决layui前端框架 form表单,table表等内置控件不显示的问题

    使用form表单前需要声明, table表格也是类似原理 以上这篇解决layui前端框架 form表单,table表等内置控件不显示的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 解决Layui选择全部,换页checkbox复选框重新勾选的问题方法

    在项目中发现layui数据表格勾选复选框checkbox的时候,转到新的一页勾选,上一次的勾选不会选中,即没有记忆功能.导致跟后台交互传递参数不全问题. 为了解决此问题,我们可以借助缓存,每勾选一个,保存到缓存变量数组中,取消勾选的时候,删除缓存的对应项. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <

随机推荐