post(action, _params, callback) { let options = { "portType": this.portType, ..._params } let params = { actionName: action, actionData: _params } let skip = false if (arrayAtion.includes(action)) { skip = true /* 跳过登录认证、即游客身份进入 */ } else { skip = false } let openId = uni.getStorageSync('openId') let lurl = uni.core.rootPath + uni.api.get('request') return new Promise((resolve, reject) => { uni.request({ url: lurl, header: { 'Content-Type': 'application/json;', 'openId': openId, "skip": skip ? 'true' : 'false', "portType": this.portType //动态获取appid相关 }, method: 'POST', data: JSON.stringify(params), success: (res) => { if (res.statusCode == 200) { let data = this.getResultData(res.data) if (data['code'] && data['code'] == '400') { callback && callback(data, false, data['msg']) reject(data['msg']) } else if (data['code'] && data['code'] == '401') { uni.showModal({ title: '温馨提示', content: '登录状态已过期,请重新登录!', confirmColor: '#ff9966', success: (e) => { asCore.toLogin() } }) } else { callback && callback(data, true, 'success') resolve(data) } } else { let rdata = res.data if (rdata['code'] && rdata['code'] == '500') { } callback && callback(res.data, false, res.data) reject(res.data) } }, fail: (res) => { callback && callback(null, false, '网络连接失败,请检查网络设置!') reject('网络连接失败,请检查网络设置!') } }) }) }如何调用这个方法
时间: 2023-12-22 19:04:34 浏览: 173
可以按照以下方式调用该方法:
```javascript
let action = 'your_action_name'; // 请求的接口名称
let params = { // 请求的参数
param1: 'value1',
param2: 'value2'
};
let callback = (data, success, message) => { // 回调函数
if (success) {
console.log('请求成功:', data);
} else {
console.log('请求失败:', message);
}
};
// 调用 post 方法
post(action, params, callback);
```
其中,`action` 为请求的接口名称,`params` 为请求的参数,`callback` 为请求完成后的回调函数。在回调函数中,`success` 表示请求是否成功,`data` 表示请求返回的数据,`message` 表示请求失败时的错误信息。
相关问题
post(action, _params, callback) { let options = { "portType": this.portType, ..._params } let params = { actionName: action, actionData: _params } let skip = false if (arrayAtion.includes(action)) { skip = true /* 跳过登录认证、即游客身份进入 */ } else { skip = false } let openId = uni.getStorageSync('openId') let lurl = uni.core.rootPath + uni.api.get('request') return new Promise((resolve, reject) => { uni.request({ url: lurl, header: { 'Content-Type': 'application/json;', 'openId': openId, "skip": skip ? 'true' : 'false', "portType": this.portType //动态获取appid相关 }, method: 'POST', data: JSON.stringify(params), success: (res) => { if (res.statusCode == 200) { let data = this.getResultData(res.data) if (data['code'] && data['code'] == '400') { callback && callback(data, false, data['msg']) reject(data['msg']) } else if (data['code'] && data['code'] == '401') { uni.showModal({ title: '温馨提示', content: '登录状态已过期,请重新登录!', confirmColor: '#ff9966', success: (e) => { asCore.toLogin() } }) } else { callback && callback(data, true, 'success') resolve(data) } } else { let rdata = res.data if (rdata['code'] && rdata['code'] == '500') { } callback && callback(res.data, false, res.data) reject(res.data) } }, fail: (res) => { callback && callback(null, false, '网络连接失败,请检查网络设置!') reject('网络连接失败,请检查网络设置!') } }) }) }
这段代码是一个基于 uniapp 的网络请求方法,其中参数说明如下:
- `action`:请求的接口名称。
- `_params`:请求的参数对象。
- `callback`:请求的回调函数。
在方法内部,首先将 `_params` 合并到 `options` 中,然后将 `action` 和 `options` 封装到 `params` 对象中。接着,根据 `action` 是否在 `arrayAction` 数组中来判断是否跳过登录认证,将结果赋值给 `skip` 变量。然后从本地缓存中获取 `openId`,并设置请求的 URL 地址为 `uni.core.rootPath + uni.api.get('request')`。最后使用 `uni.request` 方法发送 POST 请求,设置请求头中的 `Content-Type` 为 `application/json;`,`openId` 为获取到的 `openId`,`skip` 为 `skip` 变量的值,`portType` 为 `this.portType` 的值,请求参数为 `params` 对象序列化后的 JSON 字符串。
在请求成功时,首先判断响应的状态码是否为 200,如果是,则将响应的数据解析为 JSON 对象,并判断返回的数据是否包含 `code` 属性。如果 `code` 属性的值为 `400`,则回调传入 `data` 对象、`false` 和 `msg` 属性的值。如果 `code` 属性的值为 `401`,则显示一个提示框,提示用户登录已过期,然后调用 `asCore.toLogin()` 方法重新登录。如果 `code` 属性不存在或者不为 `400` 或 `401`,则回调传入 `data` 对象、`true` 和 `'success'`。如果响应的状态码不是 200,则判断响应数据中是否包含 `code` 属性,如果包含且值为 `500`,则回调传入 `data` 对象、`false` 和响应数据的值。否则,回调传入 `data` 对象、`false` 和响应数据本身。如果请求失败,则回调传入 `null`、`false` 和 `'网络连接失败,请检查网络设置!'`。
阅读全文