Javascript 无法访问req.body,即使在使用body解析器时也是如此
我正在尝试启动并运行登录功能,但无法访问req.body对象 当我第一次遇到这个问题时,post路由甚至没有被触发(console.log根本没有显示在终端中),请求最终会超时。在主体解析器初始化中添加这一行后,此操作停止:Javascript 无法访问req.body,即使在使用body解析器时也是如此,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试启动并运行登录功能,但无法访问req.body对象 当我第一次遇到这个问题时,post路由甚至没有被触发(console.log根本没有显示在终端中),请求最终会超时。在主体解析器初始化中添加这一行后,此操作停止: type: 'x-www-form-urlencoded', 现在,终端中显示路由的console.log表单,但两个参数都为空 路由器.js const express = require('express'), router = express.Router
type: 'x-www-form-urlencoded',
现在,终端中显示路由的console.log表单,但两个参数都为空
路由器.js
const express = require('express'),
router = express.Router();
router.post('/signup', function (req, res) {
console.log(req.body.name, req.body.password);
res.send('posted');
});
module.exports = router;
app.js
const express = require('express'),
app = express(),
bodyParser = require('body-parser'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
http_port = process.env.HTTP_PORT;
const http = require('http').createServer(app);
app.use(express.static(path.join(__dirname, 'public')));
app.use(
express.urlencoded({
type: 'x-www-form-urlencoded',
extended: true,
})
);
app.use(express.json());
app.use(cookieParser());
app.use(require('./backend/router'));
http.listen(process.env.PORT || http_port, () =>
console.log(`App listening on port ${http_port}`)
);
表单from index.html
<div>
<form method="POST" enctype="application/x-www-form-urlencoded">
<div class="row">
<label>Full Name</label>
<input
name="name"
type="text"
required
placeholder="Enter your name"
/>
</div>
<div class="row">
<label>Email</label>
<input
name="email"
type="email"
required
placeholder="Enter your email"
/>
</div>
<div class="row">
<label>Password</label>
<input
name="password"
type="password"
required
placeholder="Enter your password"
/>
</div>
<div class="row">
<label>Confirm Password</label>
<input
name="password_confirm"
type="password"
required
placeholder="Confirm your password"
/>
</div>
<div id="button" class="row">
<button
formmethod="POST"
formenctype="application/x-www-form-urlencoded"
type="submit"
>
Sign Up
</button>
</div>
</form>
</div>
全名
电子邮件
密码
确认密码
注册
删除在解析器中键入:“x-www-form-urlencoded”
,然后添加操作=”http://localhost:3000/signup“
到您的表单也许可以试试
app.use(bodyParser.json())代码>
而不是
app.use(express.json())代码>我无法修复它,但我设法找到了解决方法。表单中的信息也在request.fields中,因此我将使用它而不是request.body。我仍然想知道为什么它不能正常工作。您能确保在“网络”选项卡中发送请求时包含必要的数据吗?我已检查,并且在请求中,在“表单数据”下,我尝试发送的每个值都存在缺失操作。请尝试此操作。用你的服务器url替换它。我以前试过,现在做了另一个测试,但它不起作用…这没有什么区别不幸的是,这使得现在无法访问路由。如果类型:x-www-form-urlencoded被删除,则不会触发路由