# Ajax
该类型是在对uni.request方法进行了封装,对后台返回的数据进行预处理,并提供与sjfx库一致的方法名称,以简化数据访问操作。 该类共定义了5个方法,所有方法均返回一个Promise对象。
# 使用
import {Ajax} from '@/utils/index';
可在main.js文件中重新定义成功失败识别,及统一的code处理。以下为示例代码:
Ajax.afterRequest = function (result) {
const res = this.filter(result);
return new Promise((resolve, reject) => {
if (res.success || res.code === 0 || res.result === 0 || res.code === 200) {
resolve(res);
} else {
switch (res.code) {
case 401:
AppConfig.token = Ajax.header.token = '';
Cache.remove('account');
uni.redirectTo({
url: '/pages/login'
});
break;
default:
this.onError(res.message || res.msg);
reject(res.message || res.msg);
break;
}
}
});
};
# 属性
属性名 | 类型 | 说明 |
---|---|---|
header | Object | 该对象下的所有数据均会添加到Ajax请求头中。主要用于发送token |
loadingNum | Number | 正在运行中的启用了加载动画的Ajax请求数量 |
# 主要方法
方法名 | 说明 | 参数 |
---|---|---|
get | 使用get方式提交数据,并获取json数据 | url, params, showLoading,useFilter |
post | 使用post方式提交form数据,并获取json数据 | url, params, showLoading,useFilter |
postJson | 使用get方式提交json数据,并获取json数据 | url, params, showLoading,useFilter |
getText | 使用get方式提交,并获取非json数据 | url, params, showLoading |
getPage | 使用get方式提交数据,并获取分页json数据 | url, page, opt,mode |
# get
get(url, data, showLoading = true, useFilter = true)
使用get方式提交数据,并获取json数据
参数 | 类型 | 说明 |
---|---|---|
url | String | 接口地址 |
data | Object | 提交的数据 |
showLoading | Boolean | 是否显示加载动画 |
useFilter | Boolean | 是否通过请求结果中的success或者code来判定请求是否成功(失败时自动调用layer.error弹出错误提示) |
# post
post(url, data, showLoading = true, useFilter = true)
使用post方式提交form数据,并获取json数据
参数同get
# postJson
postJson(url, data, showLoading = true, useFilter = true)
使用post方式提交json数据,并获取json数据
参数同get
# getText
getText(url, data, showLoading = true)
使用get方式获取文本数据
# getPage
getPage(url, page=1, opt)
请求分页数据。提交给后台的参数为offset、limit。比如第一页,每页20条数据,则offest=0,limit=20
参数 | 类型 | 说明 |
---|---|---|
url | String | 接口地址 |
page | Number | 请求的页码 |
opt | Object | 默认:{limit:20} |
# opt参数说明
limit:Number:每页显示数据条数
onEnd(isEmpty:Boolean)-没有更多数据时触发,isEmpty:是否没有任何数据
filter(result:Object)-对返回的数据进行预处理,该方法默认为返回result
# whileUnlock 防止重复提交
防止重复提交Ajax请求。无论成功还是失败,都必须调用unlock方法解锁
Ajax.whileUnlock().then(() => {
Ajax.post(api, data).then(res => {
Ajax.unlock();
}).catch(() => {
Ajax.unlock();
})
});
# 可自定义方法
方法名 | 说明 | |
---|---|---|
onLoadingShow | 请求开始前触发 | 默认为调用layer.loading |
onLoadingHide | 请求结束时触发 | 默认为调用layer.hideLoading |
onServerError | 服务端返回错误信息时触发 | 默认 |
onError(msg) | 出错时触发 | 默认为调用layer.error |
afterRequest(res) | 请求结束后触发 | 该方法需要返回一个Promise |
filter(data) | 数据加载成功后触发 | 默认为将res返回为res.data |
everyPara(datas) | 用于为每一个请求添加默认的参数 | |
buildPagePara(page,limit) | 调用getPage方法时生成的分页参数 | 默认为offset、limit |