アプレットはどのようにしてデータをフォーム データ形式でバックエンドに送信しますか
求方式 & 传参方式
インターフェイスは決して静的ではありません。そのような要件に遭遇した場合、それをどのように操作するのかを知っておく必要があります小程序是没有FormData对象
。? ?
1. コード
コードに直接移動します。
wx.request({
url: 'https://****.**.com',
method: 'POST',
header: {
'content-type': 'multipart/form-data; boundary=XXX'
},
data: '\r\n--XXX' +
'\r\nContent-Disposition: form-data; name="key1"' +
'\r\n' +
'\r\nvalue1' +
'\r\n--XXX' +
'\r\nContent-Disposition: form-data; name="key2"' +
'\r\n' +
'\r\nvalue2' +
'\r\n--XXX--',
success: (res) => {
console.log('接口返回值 => ', res)
}
})
効果は次の図に示すとおりです。
2. 最適化
上のように、このように書くと機能は実現しますが、コードがダサすぎるようです
2.1 グローバル混合方法:
/**
* 格式化formData数据
*/
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--'
}
2.2 特定のページの使用
// 需要的数据
let obj = {
'key1': 'value1',
'key2': 'value2'
}
wx.request({
url: 'https://www.jiuwa.net/tools/api.php?type=cbwm',
method: 'POST',
header: {
'content-type': 'multipart/form-data; boundary=XXX'
},
data: this.formdata(obj), // 使用mixin混入的方法
success: (res) => {
console.log('结果', res)
}
})
効果は次の図に示すとおりです。