1***@qq.com
1***@qq.com
  • 发布:2020-09-23 23:43
  • 更新:2020-09-24 00:09
  • 阅读:663

uni网络请求问题

分类:uni-app

封装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用,以及同步请求的方法。没同步我就觉得很奇怪,外面由自己控制异步,不好吗,如果有设置同步异步那就更美妙了

2020-09-23 23:43 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者) - 000000

找到原因了: //原因
if(data instanceof String){
data = JSON.parse(data)
}
返回的封装未将值进行判断,json解析异常

该问题目前已经被锁定, 无法添加新回复