小程序: 不支持 FormData(坑)
小程序不支持 formdata 解决方案
坑
小程序环境不存在 FormData 全局对象,除一些二进制数据(File/Blob) 需要用到 FormData 的场景,可以直接使用
x-www-form-urlencoded替换,小程序的请求工具,会自己替换成 FormData 传递。上传文件等场景就另外处理了。
我遇到的
POST https://teacher-app-api.beta.saybot.net/api/v2/clazz/24058340/inviteStudent
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1dHl_TOKEN
mobile=18602131601&passportId=70691809&chineseName=%E5%AD%A6%E7%94%9F&englishName=student
思路1
看起来像 FormData,实际上是 urlencoded


思路2
简单实现一个 formdata 方法,提交 formdata
 wx.request({
            url: 'https://api.zbgedu.com/api/edu/zbids/student/studentAddToActivity',
            method: 'POST',
            header: {
                'content-type': 'multipart/form-data; boundary=XXX'
            },
            data: '\r\n--XXX' +
                '\r\nContent-Disposition: form-data; name="studentId"' +
                '\r\n' +
                '\r\n' + params.studentId +
                '\r\n--XXX' +
                '\r\nContent-Disposition: form-data; name="activityId"' +
                '\r\n' +
                '\r\n' + params.activityId +
                '\r\n--XXX--',
            success: function (res) {
                console.log(res, '参加活动接口')
            }
        })function formdata(obj = {}) {
  let result = "";
  for (let name of Object.keys(obj)) {
    let value = obj[name];
    result +=
      "\r\n--XXX" +
      '\r\nContent-Disposition: form-data; name="' +
      name +
      '"' +
      "\r\n" +
      "\r\n" +
      value;
  }
  return result + "\r\n--XXX--";
}