Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 表单数据在使用Axios发送后为空_Node.js_Express_Vue.js_Axios_Multipartform Data - Fatal编程技术网

Node.js 表单数据在使用Axios发送后为空

Node.js 表单数据在使用Axios发送后为空,node.js,express,vue.js,axios,multipartform-data,Node.js,Express,Vue.js,Axios,Multipartform Data,我正在使用Axios从VueJS应用程序发送FormData。问题是,当我输出FormData时,它是空的。我以前在发送文件时使用了相同的方法(我现在不发送文件),然后FormData显示了我附加到其中的正确数据。我要追加的数据是字符串类型 客户端 服务器端 来自axios文档: 默认情况下,axios将JavaScript对象序列化为JSON 因此,您不能将JSFormData对象直接传递给axios调用的选项。如果必须使用FormData,请参阅此处的推荐方法: 然而,正如您上面提到的,如果

我正在使用
Axios
VueJS
应用程序发送
FormData
。问题是,当我输出
FormData
时,它是空的。我以前在发送文件时使用了相同的方法(我现在不发送文件),然后
FormData
显示了我附加到其中的正确数据。我要追加的数据是字符串类型

客户端

服务器端


来自axios文档:

默认情况下,axios将JavaScript对象序列化为JSON

因此,您不能将JS
FormData
对象直接传递给
axios
调用的选项。如果必须使用
FormData
,请参阅此处的推荐方法:

然而,正如您上面提到的,如果看起来像键/值对,则根本不使用
FormData
,而是使用常规JavaScript对象

const body = {
    "id": this.chosenRoute.id.
    "name": this.routeName,
    "description": this.routeDescription,
    "activity": this.activity,
    "preamble": this.preamble
}

axios.post('http://localhost:8080/editRoute', body, ... 

您不应该对常规字段使用.set()而不是.append(),我以为您只对文件使用.append()


我还建议使用原生JSON来处理表单数据,正如其他答案所提到的,这是一个更简单、更干净的解决方案。

不太熟悉vue.js/axios,但它可能是一个内容类型问题。发送文件时内容类型不同。@JM-AGMS您知道我是否可以将其作为其他内容发送吗?我曾尝试将其作为JSON字符串发送,但它会给我带来问题too@MrAleister这次我不发送文件。它只是字符串。@M.H它认为您应该设置
let fd=new FormData()
app.post('/editRoute', function(req,res){
    console.log(req.body);
    const routeId = req.body.id;
    console.log(routeId);
    Route.findById(routeId, (err, route) => {
        res.set("Access-Control-Allow-Origin", "*");
        route.update(req.body);
    });
});
const body = {
    "id": this.chosenRoute.id.
    "name": this.routeName,
    "description": this.routeDescription,
    "activity": this.activity,
    "preamble": this.preamble
}

axios.post('http://localhost:8080/editRoute', body, ...