【发布时间】:2018-03-20 06:48:50
【问题描述】:
我的代码:
fetch("api/xxx", {
body: new FormData(document.getElementById("form")),
headers: {
"Content-Type": "application/x-www-form-urlencoded",
// "Content-Type": "multipart/form-data",
},
method: "post",
}
我尝试使用 fetch api 发布我的表单,它发送的正文如下:
-----------------------------114782935826962
Content-Disposition: form-data; name="email"
test@example.com
-----------------------------114782935826962
Content-Disposition: form-data; name="password"
pw
-----------------------------114782935826962--
(我不知道为什么每次发送时边界中的数字都会改变......)
我希望它使用“Content-Type”发送数据:“application/x-www-form-urlencoded”,我该怎么办?或者如果我只需要处理它,我如何解码控制器中的数据?
谁回答我的问题,我知道我可以做到:
fetch("api/xxx", {
body: "email=test@example.com&password=pw",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
method: "post",
}
我想要的是 jQuery 中的 $("#form").serialize() (不使用 jQuery)或在控制器中解码 mulitpart/form-data 的方式。不过感谢您的回答。
【问题讨论】:
-
使用
FormData有什么问题? -
我想将其发布为“email=test@example.com&password=pw”。有可能吗?
-
“我不知道为什么边界中的数字每次发送都会改变......” - 边界标识符只是一个随机标识符,它可以是任何东西并且可以本身没有任何意义。所以在那里选择一个随机数并没有错(这是客户通常会做的)。
标签: javascript ajax fetch-api