使用版本 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('
} 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('
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異步數據請求不支持自定義返回數據格式的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。