# ajax封裝
## 3.4.ajax封裝
**req方法:**
~~~
admin.req('url', {
username: 'admin',
password: '123456'
}, function(res){
alert(res.code + '-' + res.msg);
}, 'get', { headers: {} });
~~~
* 參數一 ? 請求的url,前面會自動加setter.baseServer
* 參數二 ? 非必填,請求參數
* 參數三 ? 請求回調(網絡錯誤也進此回調,404、403等)
* 參數四 ? 非必填,請求方式,get、post、put、delete等,默認get
* 參數五 ? 非必填,ajax的更多參數,如headers、dataType等
req的這五個參數是自動像左補齊的,可以簡寫:
~~~
// 無參數,get請求
admin.req('url', function(res){
console.log(res);
});
// post提交
admin.req('url', function(res){
console.log(res);
}, 'post');
admin.req('url', {
username: 'xxx',
password: '123456'
}, function(res){
console.log(res);
}, 'post');
// 參數使用JSON.stringify()會自動增加contentType為json
admin.req('url', JSON.stringify(obj), function(res){
console.log(res);
}, 'post');
// 相當于
admin.req('url', JSON.stringify(obj), function(res){
console.log(res);
}, 'post', {
contentType: 'application/json'
});
// 參數使用表單序列化
admin.req('url', $('#demoForm').serialize(), function (res) {
console.log(res);
}, 'post', {
contentType: 'application/x-www-form-urlencoded'
});
~~~
**ajax方法,參數同$.ajax:**
~~~
admin.ajax({
url: 'url',
data: {},
headers: {},
type: 'post',
dataType: 'json',
success: function(res){
alert(res.code + '-' + res.msg);
}
});
~~~
**自動傳遞header和預處理:**
在`assets/js/common.js`中的layui.config中增加方法:
~~~
layui.config({
// 自動傳遞header
getAjaxHeaders: function (url) {
var headers = [];
headers.push({name: 'token', value: 'xxxxx'});
return headers;
},
// 請求完成后預處理
ajaxSuccessBefore: function (res, url, obj) {
if(res.code == 401) {
alert('登錄超時,請重新登錄');
// obj.reload(); // 重新發起請求
// obj.update({}); // 修改res數據
// obj.xhr // ajax原始的xhr對象
return false; // 返回false阻止代碼執行
}
return true;
}
})
~~~
> req和ajax都實現了自動傳遞header、預處理、網絡錯誤也回調到success(404、500等錯誤)。
- 更新日志
- 開始使用
- 導入項目
- 項目結構
- index.html結構說明
- 添加一個菜單
- common.js說明
- 修改默認配置
- ID命名規范
- index模塊
- 加載默認主頁
- 打開一個選項卡
- 關閉指定選項卡
- 清除Tab記憶
- 修改Tab標題
- 切換Tab自動刷新
- 側邊欄手風琴折疊
- admin模塊(基礎)
- 全部方法
- 彈窗相關方法
- 加載層loading
- ajax封裝
- 緩存操作putTempData
- 鎖屏功能
- ew-event事件綁定
- open彈窗事件
- logout事件
- admin模塊(進階)
- 文字提示
- 地圖選擇位置
- 裁剪圖片
- 動畫數字
- 經緯度轉換
- 深度克隆對象
- 判斷富文本是否為空
- 移除指定style
- 模板引擎
- 滾動到頂部
- 事件監聽
- 動態模板
- 公共樣式
- 公共類
- 組件樣式
- 表單彈窗
- 表格工具欄
- 垂直選項卡
- 徽章擴展
- 下拉樹單選
- fixed方式select
- 擴展組件(常用)
- 1.下拉菜單
- 快速使用
- 更多樣式
- 對任意元素使用
- 帶遮罩層
- 自定義下拉內容
- 控制顯示方向
- 在數據表格中使用
- 氣泡確認框
- 2.消息通知
- 快速使用
- 全部方法
- 參數列表
- 解決彈窗遮擋
- 3.級聯選擇器
- 快速使用
- 異步加載
- 自定義分隔符
- 搜索功能
- 省市區選擇
- 全部方法
- 全部參數
- 4.標簽輸入框
- 快速使用
- 全部參數
- 5.分割面板
- 快速使用
- 垂直分割
- 嵌套使用
- 6.環形進度條
- 快速使用
- 全部參數
- 自定義樣式
- 7.步驟條
- 快速使用
- 風格選擇
- 上一步下一步
- 禁止標題點擊
- 擴展組件(進階)
- 1.表單擴展tableX
- 全部方法
- 合并單元格
- 行綁定鼠標右鍵
- 后端排序
- 前端分頁排序
- 導出數據
- 導出全部、搜索
- 后端導出
- 2.表單擴展formX
- 驗證規則
- 擴展方法
- 渲染select封裝
- 驗證碼倒計時
- 獲取修改字段
- 3.打印插件
- 打印當前頁面
- 設置不打印元素
- 打印自定義內容
- 分頁打印
- 拼接html
- 4.鼠標右鍵
- 快速使用
- 自定義使用
- 動態元素綁定
- 5.數據列表dataGrid
- 快速使用
- 全部參數
- 分頁功能
- 加載更多功能
- 實例方法
- 自動渲染
- 6.文件選擇器
- 快速使用
- 全部參數
- 第三方插件
- 鼠標滾輪監聽
- 二維碼模塊
- 引導插件
- 剪貼板
- 視頻播放器
- 富文本編輯器
- 更多功能
- 主題功能
- 自定義擴展模塊
- 增加按鈕權限控制
- table統一設置headers
- 彈窗專題
- 第一種 頁面層彈窗
- 第二種 iframe彈窗
- 第三種 url方式彈窗
- 第四種 捕獲層彈窗
- 四種方式選擇指南
- admin.modelForm方法
- 參數傳遞方法詳解
- 刷新url方式彈窗
- 彈窗使用模板引擎
- 彈窗內組件不渲染
- 常見問題
- 后端生成側邊欄
- ajax加載側邊欄
- 多系統模式
- logo文字換行顯示
- 側邊欄全部展開
- 側邊欄折疊圖標放大
- 彈窗下拉框出現滾動條
- 彈窗寬度不能超出屏幕
- 表單文字出現換行
- select、radio不顯示
- 日期laydate不能顯示
- 彈窗打開后按enter無限打開
- 表單提交post變成了get
- 修改表格背景和邊框顏色
- 修改placeholder顏色
- IE數據表格緩存嚴重
- 使用parent.layer問題
- 表格打印太長列未換行
- 彈窗layer.js報錯404
- 表格請求去掉page和limit
- 側邊欄折疊卡頓
- 圖片表格點擊查看
- 常用實例
- 表格內switch獲取行數據
- 表格回顯復選框
- 表格工具列動態顯示
- 表單提交數組
- 重載表格重置排序
- laydte動態控制日期限制
- 下拉樹一些數據不可選
- 修改彈窗禁用輸入框
- 表格中下拉框數據動態
- 實現點擊后轉一圈
- 頁面下拉框數據動態
- 表格動態tool事件處理
- 表格復選框和序號列合并
- 表單提交帶文件上傳
- 單標簽模式加居中文字