wx.request中POST方法傳參問題,用到JSON.stringify()


前面用到了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格式轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM