layui版本:2.5.4
起因:
今天對舊框架進行版本升級改造,找遍整個layui開發文檔以及其他解決方案,竟然沒有table
相關的渲染前回調
、執行前回調
函數;通過閱讀開發文檔,發現layui默認起始頁爲page=1&limit=10
,而後端使用mysql查詢時用到的分頁語句需要的是limit 0,10
,結果就導致了前後端分頁起始頁不匹配,爲了在開發過程中避免過多的浪費時間在這些小事情上,於是做了統一處理,在layui的ajax請求執行前做url處理,方案如下:
方案:
將代碼拷貝到<script> </script>
標籤內,注意是放在layui.js
引入文件後面(可納入封裝好的通用工具文件中去),代碼:
<script src="js/layui-v2.5.4/layui.js" charset="utf-8"></script>
<script type="text/javascript">
//重寫layui的Ajax請求
if (!(typeof layui == "undefined")) {
layui.use(['layer', 'jquery'], function () {
var layer = layui.layer,
$ = layui.jquery;
//首先備份下jquery的ajax方法
var _ajax = $.ajax;
//重寫jquery的ajax方法
var flashLoad;
$.ajax = function (opt) {
//備份opt中error和success方法
var fn = {
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
success: function (data, textStatus) {
}
}
if (opt.error) {
fn.error = opt.error;
}
if (opt.success) {
fn.success = opt.success;
}
//擴展增強處理
var _opt = $.extend(opt, {
error: function (XMLHttpRequest, textStatus, errorThrown) {
//錯誤方法增強處理
if ('TIMEOUT' == XMLHttpRequest.getResponseHeader('SESSIONS_TATUS')) {
parent.window.parent.window.location.href = XMLHttpRequest.getResponseHeader('content_path');
}
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success: function (data, textStatus) {
//成功回調方法增強處理
if (-1 == data.status || '-1' == data.status || 0 == data.status || '0' == data.status) {
return layer.msg(data.tip);
}
fn.success(data, textStatus);
},
beforeSend: function (XHR, response) {
/**
* 修復layui分頁bug,pageNum屬性-1適應後端查詢
*/
var urlParams = util.url.getUrlAllParams(response.url);
if (urlParams && urlParams.pageNum) {
var urlIndex = response.url.substring(0, response.url.indexOf('?') + 1);
urlParams.pageNum = urlParams.pageNum-1;
for (var item in urlParams) {
urlIndex += (item + '=' + urlParams[item]) + '&';
}
response.url = urlIndex.substring(0, urlIndex.length-1);
}
//提交前回調方法
flashLoad = layer.load(0, {shade: [0.7, '#393D49']}, {shadeClose: true}); //0代表加載的風格,支持0-2
},
complete: function (XHR, TS) {
//請求完成後回調函數 (請求成功或失敗之後均調用)。
layer.close(flashLoad);
}
});
return _ajax(_opt);
}
});
};
</script>
結語:
如果這個方案對您有用,請在右上方點個贊
;如果有任何疑問,可以留言
,小編會在24小時內及時回覆!如果你想汲取小編更多的精華,請關注
小編!`
持續更新中…
如有對思路不清晰或有更好的解決思路,歡迎與本人交流,QQ羣:273557553
你的提問是小編創作靈感的來源!