坑:微信小程序wx.request和wx.uploadFile中傳參數的區別


微信小程序中通過組件<form>提交表單的時候,在js中通過e.detail.value得到所提交表單的json格式數據。一般提交表單我們都是通過wx.request請求,提交表單數據,通過參數data傳數據,

wx.request({
  url: 'test.php', //僅為示例,並非真實的接口地址
  data: {
    x: e.detail.value
  },
  header: {
    'content-type': 'application/json' // 默認值
  },
  success (res) {
    console.log(res.data)
  }
})
  },
  formReset: function() {
    console.log('form發生了reset事件')
  }
})

這樣做我們可以在通過接口在后台順利接收到參數。

但是還有一種,表單里面涉及到上傳圖片的情況(ps:微信中圖片的上傳一次只能上傳一張),我們通過wx.uploadFile上傳圖片,參數filePath是通過wx.chooseImage得到的圖片臨時路徑,這時我們可以通過參數formData來傳輸表單里的內容,但是如果我們如果還是直接通過e.detail.value得到表單數據直接上傳的話,后台能接受到這個參數,但是得不到具體數據,后台接收到的形式是[object object]  這是why?很明顯就是因為傳輸的格式不對,注意:wx.request的content-type 默認為 application/json而wx.uploadFile的content-type 為 multipart/form-data。那么我們怎么傳表單數據呢:JSON.stringify(e.detail.value)  就是將json對象轉為字符串格式后再傳參,這樣在后台就可以完美的接受到數值了。

   wx.uploadFile({
      url: 'https://example.weixin.qq.com/upload', //僅為示例,非真實的接口地址
      filePath: tempFilePaths[0],
      name: 'file',
      formData: {
        x: JSON.stringify(e.detail.value)
      },
      success (res){
        const data = res.data
        //do something
      }
    })

 


免責聲明!

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



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