前面用到了get方法傳參,現在post也需要傳參傳輸內容進去,下面我來一步步研究:
- 遇到的問題:
傳參進去后反饋參數為空,沒有報錯。錯誤代碼如下:
wx.request({ url: '某地址', method: "post", data: { msg: { "phone": "某電話", "content": this.data.text, "date":this.data.time } }, header: { 'content-type': 'application/json;charset=UTF-8' }, success: (res) => { console.log(res.data) }, })
上網查找,基本給出的解決方法都是,將頭部header改成 "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" ,結果改了之后反而報錯500。左思右想不得門路,網上也沒有好的辦法,和小組同做前端頁面的同學探討后嘗試了如下改造:
1 formSubmit: function (e) { 2 this.setData({ 3 time: util.formatTime(new Date()) 4 }) 5 console.log(this.data.text); 6 console.log(this.data.time); 7 var thisText = this.data.text; 8 var thisTime = this.data.time; /*從此處開始*/ 9 var msg=JSON.stringify({ /*將對象轉換成json字符串形式*/ 10 phone: "某號碼", 11 content: thisText, 12 date: thisTime 13 }) 14 wx.request({ 15 url: '某接口', 16 method: "post", 17 data: { 18 msg: msg 19 },21 header: { 22 "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" /*更改頭部*/ 23 }, 24 success: (res) => { 25 console.log(res.data) 26 }, 27 }) 28 },
- 改造要點:1.先設一個變量保存對象,json對象和js對象都可
2.將對象通過JSON.stringify 轉換成json字符串格式(序列化)
3.更改頭部 header
- 原理:根據微信小程序官方文檔:
后台傳輸數據用的格式是字符串格式,datatype的作用是將后台數據的內容通過json.parse轉化成json格式(填前面文章的坑),那么這是不是也意味着,傳輸數據的時候是用json字符串格式傳輸的。
通過實踐,除了json格式外,datatype還可填string,傳回來的是一個字符串,不會對其進行json格式轉換。