首页 > 语言 > JavaScript > 正文

小程序兼容安卓和IOS数据处理问题及坑

2024-05-06 15:29:49
字体:
来源:转载
供稿:网友

最近开发微信小程序,遇到到过种坑,例如什么前端发送请求,后端请求成功,没有获取到前端传递的值;后端请求成功,并且值,前端就是出不来数据;请求接口出现Provision headers are shown的现象;到最后苹果手机上出现数据,安卓手机出现不了数据等等,非常多的bug。备注后端我用的php开发的,框架用的TP5.0,我一度怀疑是我框架的原因。安卓需要的是字符串,苹果好像都行吧,我是做的兼容处理。

作为一名程序员,连bug都没有,你还开发什么软件?废话不说了先上问题吧;

1.小程序前端发送请求给后端,常用的有2中方式,一种是get请求,一种是POST请求,首先举例get请求吧,

wx.request({      url: that.globalData.baseUrl + 'user/add',//请求后台接口      data: {       code: avatarUrl,       username: nickName }      header: {       'content-type':'application/json',// 默认值        token: wx.getStorageSync('token')       },      method: "get",      success: function (res) {       // console.log(res)      }     }) 

这种传递方式是没有什么问题,后端怎么都会接受到数据,前端也可以接受到数据。

主要是看第二种post方法;

wx.request({      url: that.globalData.baseUrl + 'wx/getToken',//请求后台接口      data: {       code: res.code      },      header: {       "Content-Type": "application/x-www-form-urlencoded",      },      method: "POST",       success: function (res) {       console.log(res);       wx.setStorageSync('token', res.data.data)      }     })

这种情况是后端是可以接受到数据的,,但是把  "Content-Type": "application/x-www-form-urlencoded",换成 'content-type':'application/json',后端接口就接收不到数据,但是有的小程序上面post请求中header头换成'content-type':'application/json',也能接受到数据。但是我后端就是不能,后来我就换成了这个。

2.后端请求成功,并且值,前端就是出不来数据?

 主要是请求的类型和你返回给前端的数据类型不对一致。这是你就需要及时检测数据类型,并且换成对应的数据类型。

3.请求接口出现Provision headers are shown的现象

出现上述现象主要是应为阻塞的原因,主要需要下面几个方面,首先是否用了断点,断点没注意,就会出现;数据库方面的请求连接是否过长,否则也会出现。小程序要求速度快,所以一般都用原生数据库接口更好点,响应速度短,界面反应也快。

4.到最后苹果手机上出现数据,安卓手机出现不了数据

例如后端返回数据出现是这种 "{"code":1,"data":"4f756fd91b8a81f1","msg":"请求成功"}" ,那么需要对应处理:首先判断是那种数据类型

var json =res.dataif (typeof json != 'object') { if (json != null) {json = json.replace("/ufeff", "")var ob = JSON.parse(json)  } }            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选