解决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 ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
深入理解JavaScript 参数按值传递
May 24 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
React Native之prop-types进行属性确认详解
Dec 19 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
Sep 05 Javascript
vue 左滑删除功能的示例代码
Jan 28 Javascript
ES6函数实现排它两种写法解析
May 13 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+MySQL投票系统的设计和实现分享
2012/09/23 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
PHP钩子实现方法解析
2019/05/21 PHP
List Installed Hot Fixes
2007/06/12 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Django models文件模型变更错误解决
2020/05/11 Python
J2EE系统只能是基于web
2015/09/08 面试题
支教自我鉴定
2014/01/18 职场文书
七年级政治教学反思
2014/02/03 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
文明市民先进事迹
2014/05/15 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
护士实习自荐信
2015/03/06 职场文书
小学语文国培研修日志
2015/11/13 职场文书
mysql 排序失效
2022/05/20 MySQL