## 3.4.ajax封装
**req方法:**
```javascript
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的这五个参数是自动像左补齐的,可以简写:
```javascript
// 无参数,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:**
```javascript
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中增加方法:
```javascript
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等错误)。
<br/>
- 更新日志
- 开始使用
- 导入项目
- 项目结构
- 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事件处理
- 表格复选框和序号列合并
- 表单提交带文件上传
- 单标签模式加居中文字