我使用ve3和axios使用FormData
发布表单,但它是空的,没有任何东西正在传递。
{"formData" {}}
我是这样做的:
const formData= new FormData();
formData.set("name", name);
axios.post("postform", formData);
我也试过这个:
formData.set("name", "John Doe");
axios.post("postform", formData);
:
formData.append("name", "John Doe");
axios.post("postform", formData);
但是没有成功。没有错误,只是空的。
我在PHP中像这样检索它们:echo $request->input("name");
我的问题是:
如何使用FormData
发布数据?
如果您没有发送任何文件(或者您的表单不是multipart/form-data),您可以使用以下方法通过axios发送数据:
let formData = {};
formData.name = "John Doe";
axios({
url: "postform",
method: "POST",
data: formData
});
编辑:
如果您正在发送任何文件,那么在我的情况下,以下内容对我有效:
const formData = new FormData();
formData.append("name", "hello world");
axios({
url: 'postform',
method: "POST",
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
})
你可以把你的FormData对象转换成一个简单的对象,然后把这个对象发送给服务器。
const formData = new FormData();
formData.set("key1", "value1");
formData.set("key2", "value2");
let data = {};
// convert the key/value pairs
for(var pair of formData.entries()) {
data[pair[0]] = pair[1];
}
axios.post("postform", data);
您可能需要发送标题'Content-Length': formData.getLengthSync()
。
const response = await axios.delete(url, {
"data": formData,
"headers": {
"Content-Length": formData.getLengthSync()
}
});