我懒得说了
- //放url相同的片段
- const rootUrl = ""
-
- // 示例: ajax({ url:'/api/login', param: param, method: "POST" });
- export default function ajax(config, isLoading = true) {
- let url = rootUrl + (config.url || '');
- let param = config.param || {};
- let method = (config.method || 'GET').toUpperCase();
- let promise = '';
- const headers = {
- 'Authorization': 'Bearer '+ uni.getStorageSync('token') || null,
- ...config.headers
- };
- // isLoading ? uni.showLoading({ title: '加载中...', }) : ''; // 中心显示加载中弹窗
- return new Promise((resolve, reject) => {
- setTimeout( () => { // 通过定时器实现真正的异步请求
- uni.request({
- url,
- method,
- data: param,
- header: headers,
- success(res) {
- // console.log("ajax: res:", res);
- if(!res){
- reject('返回值已被您拦截!');
- return;
- }
-
- // 获取Token。注:Web端为authorization,小程序端为Authorization。
- if(res.header && (res.header.authorization || res.header.Authorization)){
- // console.log('authorization:', res.header.authorization);
- uni.setStorageSync('token', (res.header.authorization || res.header.Authorization));
- }
-
- if(res.statusCode !== 200){
- // console.log("请求返回的状态码非200: " + url + " : "+ JSON.stringify(res))
- reject(res);
- return;
- }
-
- // 返回的数据体
- if(res.data && res.data.err === 0 ){
- resolve(res.data.data || {});
- return;
- }
- else if( res.data.err >= 6000 && res.data.err <= 6999 ){
- // console.log("ajax: unlogin:", res.data.err)
- uni.showModal({
- title:'登录提示',
- content: res.data.msg || '您尚未登录',
- success(e) {
- // console.log("ajax: showModal:", e)
- if (e.confirm) {
- uni.redirectTo({
- url:'/pages/login/login-account'
- })
- }
- }
- })
- reject(res.data); //没登录点击我的 返回这个报错
- }
- else {
- reject(res.data); //如果没有登录 其他页面返回这个报错
- }
- },
- fail(err) { //接口失败调用
- console.warn('ajax: fail:', err)
- reject(err);
- return;
- },
- complete() { //
- // uni.hideLoading();
- uni.stopPullDownRefresh()
- },
- })
- }, 50);
- });
- }