我正在尝试访问POST请求中的数据,但是当我console.log(req.body)时,我只是得到一个空的{}。
我觉得我的错误在标记中吗?
这是相关的客户端标记
<div id='create' class="card">
<form method = 'post' action='/'>
<textarea placeholder="Enter your name"></textarea><br>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
相关后端代码
app.use(bodyParser.json());
app.post('/',(req, res)=>{
console.log(req.body);
});
如果用户在文本区域中输入“ John”,我想刷新页面,并在终端中显示John名称。
我计划将数据导出到连接到mongodb的另一个文件
答案 0 :(得分:0)
您要告诉bodyParser解析正文,就好像它是JSON。但是,标准的<form>
不会以JSON的形式提交数据,而是以application/x-www-form-urlencoded
的形式提交数据。
要在您的快速应用中阅读该信息,您将需要以下内容:
app.use(bodyParser.urlencoded({extended: false}));
如果要同时允许URL编码和JSON数据,可以将两种方法结合使用:
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
完整的示例可以是found here。
请注意:如果您使用的是recent version的Express,还可以将body-parser
模块换成内置的替代方案:
app.use(express.urlencoded({extended: false}))
app.use(express.json())
这仍然在下面使用body-parser
(因此具有完全相同的synax),但是在您的应用中看起来可能更整洁。
答案 1 :(得分:-1)
通过结合两件事解决了这个问题。
1。)我需要添加app.use(bodyParser.urlencoded()) 因为它不是由表单发送的,就好像是JSON数据一样。
2。)我需要在文本区域添加一个名称。
答案 2 :(得分:-1)
当您查看控制台日志语句时,您正在转储作为空对象的资源。有了这些信息,我查看了您的HTML。
使用HTML处理表单时,您将具有一个表单标签,但是表单内部的输入,文本区域等将需要 name 属性,以便正确构建有效负载。
<textarea name="test"></textarea>
将简单地在请求有效负载中显示一个名为 test 的新属性,其中包含提交表单时textarea中内容的内容。