我遇到的问题是,无论我使用哪种身体解析器设置,来自提交表单的帖子请求都会生成一个空体。我的package.json依赖项都是最新的,我之前的应用程序(使用已弃用的app.use(bodyParser);)执行此操作没有任何问题。我一直在倾倒SO和各种网站,并尝试每一个黑客,但似乎没有任何工作。
以下是我的app.js的相关部分:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
var routes = require('./routes/routes.js');
app.post('/checklogin',routes.post_checklogin);
这是在发布请求时调用的路由功能:
var checkLogin = function(req,res) {
console.log(req.body)
}
这是我试图从我的形式获取形式的形式,用哈巴狗模仿:
form(action="/checklogin" method="post" enctype="application/x-www-form-urlencoded")
input(id="login-email" class="form-control" type="text" placeholder="email")
input(id="login-password" class="form-control" type="text" placeholder="password")
button(id="login-submit" class='btn btn-primary') Login
无论enctype或body解析器设置的哪种组合允许我除了'{}'之外还有其他东西作为req.body。如果有人能指出我想象的是一个非常愚蠢的错误,我会永远感激。
另外,我意识到这可能不是处理登录的最佳方式,但这只是为了让POST请求在整个应用程序中正常工作。
答案 0 :(得分:0)
这不是body-parser
问题,您错过了name
元素的input
属性。
成功的控制是有效的"提交。每一次成功 control的控制名称与其当前值配对 提交的表单数据集。必须定义成功的控制 在FORM元素中,必须具有控件名称。
input(id="login-email" name="email" class="form-control" type="text" placeholder="email")
input(id="login-password" name="password" class="form-control" type="text" placeholder="password")