sendAjax
首先,会接受三个参数
第一个参数为请求前的必要的数据(接口地址,需传参数等) 默认method为POST(特别调整了method值传入为大写) data为{}第二个参数为回调函数(在调用之前,成功后,完成后) 默认调用前加正在加载提示,防止重复点击 完成后关闭正在加载提示 (特别:调用前的回调,是自己加的。)第三个参数为需刷新的局部 防止整个页面刷新,少调几次后台其次,调用前会确认是否有登录权限,或者G_authorization 的缓存信息
如果有G_authorization 的缓存信息或不需要登录权限,就是登录状态没问题,继续调用ajax否则去重新登录。(有G_authorization 的缓存信息:已有帐号才会有此变量)最后, 成功,200 =》调用成功的回调函数
401 =》登录失效,去重新登录
其他 =》处理失败
失败 =》服务器连接失败完成 =》调用完成的回调函数登录
login(拿到code)
用户同意
=》 getUserInfo (用户基本信息)
=》换unionId,拿到用户信息,设置全局变量
=》判断全局变量G_authorization,没有
=》 增加新的小程序账户
=》 刷新局部,或当前页面
const HOST = require('../config.js')function sendAjax(options, callback, outTimeAuthCbOrNeedAuth) { // 登录信息过期处理类型 const OTCB = outTimeAuthCbOrNeedAuth || function () { getCurrentPages().pop().onLoad(getCurrentPages().pop().options) } const _sets = options if (typeof _sets.type === 'undefined') { _sets.type = 'POST' } if (typeof _sets.data === 'undefined') { _sets.data = {} } // 如果不是明确不需要登录权限 而且 没有 G_authorization 的缓存信息 if (outTimeAuthCbOrNeedAuth !== false && !wx.getStorageSync('G_authorization')) { getApp().uploadUserInfo(OTCB) return } // 纠正method大写 _sets.type = _sets.type.toUpperCase(); const bcallback = callback.beforeSend || function (data) { wx.showToast({ title: '正在加载...', icon: 'loading', duration: 10000 }) }; const scallback = callback.success || function (data) { }; const ccallback = callback.complete || function (data) { wx.hideToast() }; bcallback() wx.request({ url: HOST + _sets.url, method: _sets.type, data: _sets.data, header: { 'content-type': 'application/json', 'authorization': outTimeAuthCbOrNeedAuth !== false ? wx.getStorageSync('G_authorization') : '' }, success(res) { if (res.data.code == 200) { scallback(res.data) } else { if (res.data.code == 401) { getApp().uploadUserInfo(OTCB) } else { wx.showModal({ title: '提示', content: res.data.message || '处理失败', showCancel: false }); } } }, fail() { wx.showModal({ title: '提示', content: '服务器连接失败', showCancel: false }); }, complete() { ccallback() } })}module.exports = sendAjax//app.js/** * * 更新用户信息 * 1 授权登录 * 2 拿去用户信息 * 3 调用/user/account/platform/login 进行登录,有则拿取信息,无则进行注册 * 4 拿到用户信息后,没绑定手机号 单独在页面判断登录 * 5 老用户直接刷新页面,有自定义的回调就自定(cb),没有就刷新当前页面 * */ uploadUserInfo(cb) { const that = this wx.showNavigationBarLoading() wx.login({ success: (loginResult) => { that.globalData.platCode = loginResult.code wx.showNavigationBarLoading() wx.getUserInfo({ success: (userResult) => { // 拿取登录换取unionId 必要参数 let platUserInfoMap = that.globalData.platUserInfoMap platUserInfoMap["encryptedData"] = userResult.encryptedData platUserInfoMap["iv"] = userResult.iv that.globalData.platUserInfoMap = platUserInfoMap wx.showNavigationBarLoading() wx.request({ url: HOST + '/user/account/platform/login', method: 'POST', data: { platType: that.globalData.platType, platCode: that.globalData.platCode, platUserInfoMap: that.globalData.platUserInfoMap, weixinAppType: 3 }, header: { 'content-type': 'application/json' }, success: (res) => { if (res.data.code == "200") { that.globalData.unionId = res.data.unionId // 更新全局数据 wx.setStorageSync("G_unionId", res.data.unionId) wx.setStorageSync("G_userKey", res.data.userKey) wx.setStorageSync("G_nickName", res.data.userName) wx.setStorageSync("G_avatar", res.data.avatar) wx.setStorageSync("G_isBind", res.data.isBind) wx.setStorageSync("G_userId", res.data.userId) wx.setStorageSync('G_authorization', res.data.authorization) // 没绑定手机号 单独在页面判断登录 if (res.data.authorization == "") { wx.showNavigationBarLoading() wx.request({ url: HOST + '/user/account/weixinapp', method: 'POST', data: { unionId: res.data.unionId, nickName: res.data.userName, headimgurl: res.data.avatar }, header: { 'content-type': 'application/json' }, success: (resp) => { if (resp.data.code == 200) { wx.setStorageSync('G_authorization', resp.data.authorization) if (typeof cb === 'function') { cb(); } else { //获取当前页面,并刷新 getCurrentPages().pop().onLoad(getCurrentPages().pop().options) } } else { wx.showModal({ title: '提示', content: resp.data.message, showCancel: false }); } }, fail: () => { wx.showModal({ title: '提示', content: '服务器连接失败', showCancel: false }); }, complete: () => { wx.hideNavigationBarLoading() } }) // } else if (wx.getStorageSync("G_isBind") != 1) { // wx.showModal({ // title: '提示', // content: '请先绑定手机号,体验布管家全套纺织管理服务', // showCancel: false, // success: (res) => { // wx.navigateTo({ // url: '/page/center/bindPhone', // }) // } // }); } else { if (typeof cb === 'function') { cb(); } else { //获取当前页面,并刷新 getCurrentPages().pop().onLoad(getCurrentPages().pop().options) } } } else { wx.showModal({ title: '提示', content: res.data.message, showCancel: false }); } }, fail() { wx.showModal({ title: '提示', content: '服务器连接失败', showCancel: false }); }, complete: () => { wx.hideNavigationBarLoading() } }) }, fail: (userError) => { wx.showModal({ title: '提示', content: '若不授权微信登录,则无法使用相关功能;点击重新获取授权,则可重新使用。', cancelText: "不授权", confirmText: "授权", success: (res) => { if (res.confirm) { wx.openSetting({ success: (res) => { if (res.authSetting["scope.userInfo"]) { //获取当前页面,并刷新 getCurrentPages().pop().onLoad(getCurrentPages().pop().options) } } }); } else if (res.cancel) { // 同今天及,哦同里 恩 段 义 绝 wx.showModal({ title: '提示', content: '未授权,无法流畅使用主要功能', showCancel: false }); } } }); }, complete: () => { wx.hideNavigationBarLoading() } }); }, fail: function (loginError) { wx.showModal({ title: '提示', content: '微信登录失败,请检查网络状态', showCancel: false, success: (e) => { console.log('微信登录失败', e) } }); }, complete: () => { wx.hideNavigationBarLoading() } }); },














