尝试使用 axios 和 formData 发布数据,但它是空的



我使用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()
}
});

最新更新