封装uni请求,调用请求请求方法请求后端,封装方法不可以,请求方法不可以。
疑问,参数一样,就是位置不同,一个放在Vue.propety上,就不行
//添加数据
let url = this.$Server.baseUrl + "/order/repair";
let method = "POST";
let header = this.$GetHeader("json");
我封装的请求
/**
* 封装请求
* @param {Object} ops
* @param {Object} method
* @param {Object} data
*/
Vue.prototype.newRequest = function (url,method,header,data) {
return new Promise((resolve)=>{
// 封装主体:网络请求
uni.request({
url: url,
method: method,// 默认值GET,如果有需要改动,在options中设定其他的method值
header: header,
data: data,
success: (res) => {
resolve( this.$doResData(res.data, true) )
},
fail: (err) =>{
// 页面中弹框显示失败
uni.showToast({
title: "网络请求超时",
duration: 2000,
icon: 'none'
});
}
})
})
}
这样请求就不行
this.$doRequest(url,method,header,this.order).then((res) => {
if(res){
console.log(res)
}
})
chunk-vendors.js:10 [system] SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at VueComponent._vue.default.$doResData (eval at ./node_modules/b
..........
原请求 改请求可以
uni.request({
url: url,
method: method,// 默认值GET,如果有需要改动,在options中设定其他的method值
header: header,
data: this.order,
success: (res) => {
console.log(res)
},
fail: (err) =>{
// 页面中弹框显示失败
uni.showToast({
title: "网络请求超时",
duration: 2000,
icon: 'none'
});
}
})
最后说一句,哥哥们能不能封装些网络请求的js用,以及同步请求的方法。没同步我就觉得很奇怪,外面由自己控制异步,不好吗,如果有设置同步异步那就更美妙了
1 个回复
1***@qq.com (作者) - 000000
找到原因了: //原因
if(data instanceof String){
data = JSON.parse(data)
}
返回的封装未将值进行判断,json解析异常