我在做一些在视频教程上看起来很简单的事情时有很多困难。我已经使用带有虚拟html的express设置了一个节点应用程序(通过ejs)。我正在尝试捕获用户通过输入栏(如搜索栏)输入的数据,并尝试验证节点是否正在捕获该数据。
我有一个带有这个表单的ejs文件。
<form action="/input" method="POST" enctype="multipart/form-data">
<div class="input-group">
<input type="text" class="form-control" name="id" placeholder="Enter the id of the product you would like to buy">
<div class="input-group-append">
<button class="btn btn-outline-secondary" name="submit" type="submit"><i class="fas fa-cart-plus mr-2"></i>Add to Cart</button>
</div>
</div>
</form>在我的app.js文件中,按照以下顺序,I:
var express = require('express');
var bodyParser = require('body-parser');
// setting up views
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));
// middleware for bodyParser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// render page
app.get('/input', function(req, res){
res.render('input');
});
// get input from text input
app.post('/input', function(req, res) {
console.log(req.body.id);
})运行此命令将返回"undefined“。我尝试用req.body替换req.body.id,后者在控制台中返回一个空对象{}。任何帮助都将不胜感激。我不确定我错过了什么。
发布于 2018-04-06 07:29:09
为自己在Node服务器实例世界中的地位而感到自豪!大多数情况下,您遇到的问题是特定于Express的。最初配置Express时声明的顺序是非常严格的。尝试将视图配置移到正文解析器的中间件设置下。我已经安装了数百个Express应用程序,我的通用goto first配置总是:
app.disable('x-powered-by')
app.disable('etag')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(cookieParser())
app.use(compress())
app.use(methodOverride())
app.use(helmet())
app.use(cors()) 在我为模板框架做任何注册之前。
https://stackoverflow.com/questions/49682898
复制相似问题