Javascript 无法访问post请求中的数据。快车

Javascript 无法访问post请求中的数据。快车,javascript,node.js,express,body-parser,Javascript,Node.js,Express,Body Parser,我试图访问POST请求中的数据,但是当我使用console.log(req.body)时,我得到的只是一个空的{} 我觉得我的错误在标记中的某个地方 下面是相关的客户端标记 <div id='create' class="card"> <form method = 'post' action='/'> <textarea placeholder="Enter your name"></textarea><br> &l

我试图访问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>
如果用户在文本区域输入“John”,我希望页面刷新,并且John的名字出现在终端中


我计划将该数据导出到另一个连接到我的mongodb的文件中

您正在告诉bodyParser像解析JSON一样解析主体。但是,标准的
不会以JSON的形式提交数据,而是以
application/x-www-form-urlencoded的形式提交数据

要在express应用程序中阅读这些内容,您需要以下内容:

app.use(bodyParser.urlencoded({extended:false}));

允许JSON和表单数据 如果希望同时允许URL编码和JSON数据,可以将这两种方法结合使用:

app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())
可以举一个完整的例子


内置替代方案 值得注意的是:如果您使用的是Express,还可以将
主体解析器
模块替换为内置的替代模块:

app.use(express.urlencoded({extended:false}))
app.use(express.json())

这仍然在下面使用
主体解析器
(因此具有完全相同的synax),但在您的应用程序中可能看起来稍微整洁一些。

这一问题通过两种方法的组合得到了解决

1.)我需要添加app.use(bodyParser.urlencoded()) 因为它不是像JSON数据一样通过表单发送的


2.)我需要向文本区域添加一个名称。

当查看控制台日志语句时,您正在转储一个空对象的资源。根据这些信息,我查看了您的HTML

在HTML中处理表单时,您将有一个表单标记,但是表单中的输入、textarea等需要一个name属性,以便正确构建负载

<textarea name="test"></textarea>


只需在请求负载中显示一个名为test的新属性,该属性包含提交表单时文本区域中的内容。

您的作业中有一个空格:
method='post'
。我不确定这是否被允许…textarea需要一个名称,以便将其分配为有效负载的一部分。试一试。可能是@fallereneaper的复制品。就是这个。非常感谢much@Heyrio如果是这样的话,我会添加一个答案。body-parser不推荐使用未定义的扩展:提供扩展选项app.js:9:20我已经添加了这个选项,当我添加并运行它时,我会在终端中得到它。当我点击submit时,我还想在客户端页面上添加它,但是页面将持续加载并显示等待localhost。
<textarea name="test"></textarea>