解決layui中table異步數(shù)據(jù)請求不支持自定義返回數(shù)據(jù)格式的問題
更新時間:2018年08月19日 18:17:33 作者:Sq-List
今天小編就為大家分享一篇解決layui中table異步數(shù)據(jù)請求不支持自定義返回數(shù)據(jù)格式的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
使用版本 layui-v2.3.0
修改:
打開layui中table.js源碼
在 Class.prototype.pullData 這個方法定義內(nèi)部
//獲得數(shù)據(jù)
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;
//參數(shù)
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選項不支持多層級獲取接口數(shù)據(jù)的方法
// ----------------開始---------------------
if (typeof options.responseHandler == "function") {
res = options.responseHandler(res);
}
// ----------------結(jié)束---------------------
if(res[response.statusName] != response.statusCode){
that.renderForm();
that.layMain.html('<div class="'+ NONE +'">'+ (res[response.msgName] || '返回的數(shù)據(jù)狀態(tài)異常') +'</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 +'">數(shù)據(jù)接口請求異常</div>');
that.renderForm();
loadIndex && layer.close(loadIndex);
}
});
} else if(options.data && options.data.constructor === Array){ //已知數(shù)據(jù)
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) {
// 可進(jìn)行數(shù)據(jù)操作
return {
"count": res.data.count,
"data": res.data.companyList,
"code": res.code == 200 ? 0 : -1 //code值為200表示成功
};
},
以上這篇解決layui中table異步數(shù)據(jù)請求不支持自定義返回數(shù)據(jù)格式的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于捕獲用戶何時點擊window.onbeforeunload的取消事件
關(guān)于捕獲用戶何時點擊window.onbeforeunload的取消事件的代碼,需要的朋友可以參考下。2011-03-03
JSON傳遞bool類型數(shù)據(jù)的處理方式介紹
如果服務(wù)器端生成的JSON中有bool類型的數(shù)據(jù)時,到客戶端解析時出現(xiàn)了小小的問題,下面簡單為大家介紹下正確的處理方式2013-09-09
javascript Table 中2個列(TD)的交換實現(xiàn)代碼
非常不錯的用js控制talbe中td的位置的實現(xiàn)代碼。2009-02-02
教你如何在 Javascript 文件里使用 .Net MVC Razor 語法
文章主要是介紹了通過一個第三方類庫RazorJS,實現(xiàn)Javascript 文件里使用 .Net MVC Razor 語法,很巧妙,推薦給大家2014-07-07

