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


Posted in Javascript onAugust 19, 2018

使用版本 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(){
  if(typeof options.initSort === 'object'){
   that.sort(options.initSort.field, options.initSort.type);
  }
 };
 
 that.startTime = new Date().getTime(); //渲染开始时间
 
 if(options.url){ //Ajax请求
  var params = {};
  params[request.pageName] = curr;
  params[request.limitName] = options.limit;
 
  //参数
  var data = $.extend(params, options.where);
  if(options.contentType && options.contentType.indexOf("application/json") == 0){ //提交 json 格式
   data = JSON.stringify(data);
  }
 
  $.ajax({
   type: options.method || 'get'
   ,url: options.url
   ,contentType: options.contentType
   ,data: data
   ,dataType: 'json'
   ,headers: options.headers || {}
   ,success: function(res){
    // 加入这部分!!!
    // 临时解决layui的table组件中response选项不支持多层级获取接口数据的方法
    // ----------------开始---------------------
    if (typeof options.responseHandler == "function") {
     res = options.responseHandler(res);
    }
    // ----------------结束---------------------
 
    if(res[response.statusName] != response.statusCode){
     that.renderForm();
     that.layMain.html('<div class="'+ NONE +'">'+ (res[response.msgName] || '返回的数据状态异常') +'</div>');
    } else {
     that.renderData(res, curr, res[response.countName]), sort();
     options.time = (new Date().getTime() - that.startTime) + ' ms'; //耗时(接口请求+视图渲染)
    }
    loadIndex && layer.close(loadIndex);
    typeof options.done === 'function' && options.done(res, curr, res[response.countName]);
   }
   ,error: function(e, m){
    that.layMain.html('<div class="'+ NONE +'">数据接口请求异常</div>');
    that.renderForm();
    loadIndex && layer.close(loadIndex);
   }
  });
 } else if(options.data && options.data.constructor === Array){ //已知数据
  var res = {}
   ,startLimit = curr*options.limit - options.limit
 
  res[response.dataName] = options.data.concat().splice(startLimit, options.limit);
  res[response.countName] = options.data.length;
 
  that.renderData(res, curr, options.data.length), sort();
  typeof options.done === 'function' && options.done(res, curr, res[response.countName]);
 }
};

使用:

在建立table的时候

加入

responseHandler: function (res) {
 // 可进行数据操作
 return {
  "count": res.data.count,
  "data": res.data.companyList,
  "code": res.code == 200 ? 0 : -1 //code值为200表示成功
 };
},

以上这篇解决layui中table异步数据请求不支持自定义返回数据格式的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
扩展jQuery 键盘事件的几个基本方法
Oct 30 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
jquery教程ajax请求json数据示例
Jan 13 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
Bootstrap每天必学之警告框插件
Apr 26 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
Aug 25 Javascript
javascript自定义右键菜单插件
Dec 16 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
Oct 13 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 Javascript
javascript实现倒计时关闭广告
Feb 09 Javascript
Vue常用指令详解分析
Aug 19 #Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 #Javascript
layui获取选中行数据的实例讲解
Aug 19 #Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 #Javascript
菊花转动的jquery加载动画效果
Aug 19 #jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 #jQuery
jQuery UI实现动画效果代码分享
Aug 19 #jQuery
You might like
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
再探JavaScript作用域
2014/09/24 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
angular2使用简单介绍
2016/03/01 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
Python中有趣在__call__函数
2015/06/21 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
python爬取音频下载的示例代码
2020/10/19 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
探亲邀请信范文
2014/01/30 职场文书
中专自我鉴定
2014/02/05 职场文书
老公保证书范文
2014/04/29 职场文书
关于爱国的标语
2014/06/24 职场文书
新闻学专业求职信
2014/07/28 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
税务会计岗位职责
2015/04/02 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
导游词之湖北武当山
2019/09/23 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB