# 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
Last Updated: 1/13/2020, 5:20:42 PM