最近開發微信小程序,遇到到過種坑,例如什么前端發送請求,后端請求成功,沒有獲取到前端傳遞的值;后端請求成功,并且值,前端就是出不來數據;請求接口出現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)  } }            
新聞熱點
疑難解答
圖片精選