【发布时间】:2018-09-16 19:19:30
【问题描述】:
我有一个基本的快递设置。我正在尝试做一些在教程上看起来很简单但对我来说根本不起作用的事情。我正在尝试捕获用户在两个输入中输入的数据,一个文本输入和一个下拉输入。
我的 app.js 文件如下所示:
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var pug = require('pug');
// initialize express
var app = express();
// set up port
var port = process.env.PORT || 1337;
// setting up bodyParser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true}));
// setting up views
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(path.join(__dirname, 'public')));
// initial homepage get
app.get('/', function(req, res) {
res.render('index');
});
app.post('/', function(req, res) {
var input = req.body.userInput;
var quantity = req.body.quantity;
console.log("input is: " + input);
console.log("quantity is: " + quantity);
});
// listening on port
app.listen(port, function(err) {
if (err) throw err;
console.log("Server is running on port " + port);
});
我的 pug 文件格式如下:
.card
.card-body
form(action='/', method="POST")
.form-row
input.form-control(type='text', placeholder="Search for an item by its id", name="userInput")
.form-row.mt-2
.form-group
select.form-control(name="quantity")
option(value='1') Qty: 1
option(value='2') Qty: 2
option(value='3') Qty: 3
option(value='4') Qty: 4
option(value='5') Qty: 5
.card-footer
button.btn.btn-outline-secondary(type='submit')
i.fas.fa-shopping-cart.mr-2
| Add to my cart
一切都正确渲染。我为我拥有的每个表单输入提供了一个“名称”字段,并尝试从 app.js 文件中的 req.body.(name) 获取该数据。但是当我运行它并输入数据时,控制台日志中什么也没有显示。
【问题讨论】:
-
你试过
console.log(req.body)吗? -
是的。它实际上是一个空白的空控制台日志。
-
你在浏览器中看到网络标签了吗?发布请求实际上是在访问服务器吗?
-
它没有访问服务器。我在控制台的网络部分没有看到任何“POST”。
-
所以您的提交按钮实际上并没有提交表单。正如@vesse 建议的那样,在表单中添加按钮。
标签: javascript node.js express body-parser