req.body 在 express.js v8.1.4 上的 post 之后未定义?
req.body undefined after post on express.js v8.1.4?
我想使用此 HTML 代码发出 post 请求:
<!DOCTYPE html>
<form action="/post-test" method="post">
<input type="text" id="name" />
<input type="submit" value="submit">
</form>
然后在后台控制台写入请求。
所以这是我的后端代码:
const path = require('path');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'views')));
app.use(bodyParser.json());
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, "/views/html/test.html"));
});
app.post('/post-test', async function(req, res) {
const data = req.body;
console.log(data.name);
});
当我在输入中键入内容并按提交时,控制台显示未定义。
问题出在哪里,你有解决办法吗?
在表单中添加名称参数并输入一个值,即插入到请求正文中
<form action="post-test" method="post">
<input type="text" id="name" name="name"/>
<input type="submit" value="submit">
</form>
在您访问的后台
req.body.name
将表单操作更改为路由名称
<form action="/createGazme" method="post">
</form>
您有多个问题。
路径中有错别字
action="/post-test"
和app.post('/createGazme'
需要匹配
表单控件post名称=值数据
您的输入没有 name
因此它不会 post 任何数据。给它一个。
<input type="text" name="name">
id
属性用于 客户端 目的,例如作为 link 目标或使用 <label>
关联 for
属性。
您的正文解析器用于错误的数据类型
表单,默认情况下,application/x-www-form-urlencoded
中的 post 数据。您可以使用 enctype
attribute 将其更改为 multipart/form-data
.
您的正文解析器 — app.use(bodyParser.json());
只能处理 application/json
个正文。您需要一个支持您实际使用的数据格式的正文解析器。
body-parser
模块已经过时了。 Express 有一个内置的。
express.json()
将完成您当前模块的功能(但仍然无法正常工作)。
express.urlencoded()
将支持您的表单。
app.use(bodyParser.urlencoded());
我想使用此 HTML 代码发出 post 请求:
<!DOCTYPE html>
<form action="/post-test" method="post">
<input type="text" id="name" />
<input type="submit" value="submit">
</form>
然后在后台控制台写入请求。 所以这是我的后端代码:
const path = require('path');
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'views')));
app.use(bodyParser.json());
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, "/views/html/test.html"));
});
app.post('/post-test', async function(req, res) {
const data = req.body;
console.log(data.name);
});
当我在输入中键入内容并按提交时,控制台显示未定义。 问题出在哪里,你有解决办法吗?
在表单中添加名称参数并输入一个值,即插入到请求正文中
<form action="post-test" method="post">
<input type="text" id="name" name="name"/>
<input type="submit" value="submit">
</form>
在您访问的后台
req.body.name
将表单操作更改为路由名称
<form action="/createGazme" method="post">
</form>
您有多个问题。
路径中有错别字
action="/post-test"
和app.post('/createGazme'
需要匹配
表单控件post名称=值数据
您的输入没有 name
因此它不会 post 任何数据。给它一个。
<input type="text" name="name">
id
属性用于 客户端 目的,例如作为 link 目标或使用 <label>
关联 for
属性。
您的正文解析器用于错误的数据类型
表单,默认情况下,application/x-www-form-urlencoded
中的 post 数据。您可以使用 enctype
attribute 将其更改为 multipart/form-data
.
您的正文解析器 — app.use(bodyParser.json());
只能处理 application/json
个正文。您需要一个支持您实际使用的数据格式的正文解析器。
body-parser
模块已经过时了。 Express 有一个内置的。
express.json()
将完成您当前模块的功能(但仍然无法正常工作)。
express.urlencoded()
将支持您的表单。
app.use(bodyParser.urlencoded());