有个 js 小问题请教下,如下图

2020-07-30 15:02:33 +08:00
 gaocc

qs.stringify()处理了入参,为什么 form data 会带个双引号??

2955 次点击
所在节点    问与答
29 条回复
gaocc
2020-07-30 16:46:04 +08:00
@wunonglin 老哥,不在一个频道,捂脸
GzhiYi
2020-07-30 16:56:18 +08:00
const formData = new FormData()
formData.append(key, value)

axios({
method: 'post',
url: 'url',
data: formData,
headers: {'Content-Type': 'multipart/form-data' }
})
用这个就好了,为啥要用 qs ?
GzhiYi
2020-07-30 17:00:37 +08:00
你的请求 header 设置为 form-data,再用 qs 将参数转为 query 的形式那肯定不对啊。
header 设置为 form-data,请求的 payload 就应该是 formData 。
new 一个 FormData 再传入就好了。
wunonglin
2020-07-30 17:05:12 +08:00
@gaocc #21

https://stackblitz.com/edit/angular-ivy-u8hw2y?file=src%2Fapp%2Fhello.component.ts

我写了个例子,我不信你这样写发不出 form-data
wunonglin
2020-07-30 17:06:41 +08:00
LyleRockkk
2020-07-30 17:09:02 +08:00
楼主用这种方式试试 ,我的项目里面都是这样封装的,后台也是 x-www-form-urlencoded,从没出现问题

axios({
method: 'post',
url: host+url,
data: qs.stringify(params),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
gaocc
2020-07-30 17:27:32 +08:00
@LyleRockkk 我和你一样都写法,我再捋捋吧
a516307724
2020-07-30 19:31:57 +08:00
@gaocc transformRequest 和 请求拦截器有做了什么奇怪的事吗?
gaocc
2020-07-30 19:59:04 +08:00
@a516307724 靠,拦截器检查了,我没查 transformRequest,真的在这干了奇怪都事情,之前是 json 的就全局转了下 stringify 。感谢感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694344

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX