在Node.js POST请求中,Jadeforms返回空表示

我用express和node.js来创build一个飞行日志数据库的前端,作为我培训的一部分。 我已经确认我的input有名称 ,我的身体分析器设置为应用程序/ JSON ,并且我的路线出现在我的中间件声明后 ,但我的req.body对象保持未定义。 我的问题是为什么。 这里是我的玉器forms的一个领域:

.row.col-sm-16 div.input-group.form-control form(action='',method='POST') div(data-role='fieldcontain') fieldset(data-role='controlgroup') label(for='HobbsOut') HobbsOut &nbsp &nbsp &nbsp input(id='HobbsOut',type='text',value='',placeholder='hobbs in generated',name='HobbsOut') 

低于这个差距的每件事都会重复。 提交button:

 div.text-center button.btn.btn-default.input-group-button Submit 

buttondiv与'data-role'divsalignment。 相关路线:

 app.post('/logadd', ctrl.addFlight); 

而相关的控制者:

 module.exports.addFlight = function (req, res) { console.log(req.body.HobbsOut); res.redirect('/loglist'); }; 

目前我只是试图打印第一个字段,并将用户redirect到航class日志。 我在多个应用程序中遇到此问题。 我知道如何将用户input推入数据库是非常重要的。 任何和所有的帮助,不胜感激。

编辑1:

您是否尝试过使用Fiddlervalidation发送的请求是否与发送POST请求一起发送的HobbsOut值和发送给我们的url(在我们的例子中为'/logadd' )?

你可以提供生成的表单的HTML而不是玉模板? 因为玉模板引擎本身与你所面临的问题无关。 你的问题可能是3:

  1. 生成的html不正确。
  2. 表单发布数据的url不是正确的
  3. 服务器端无法parsingHTTP POST请求中发送的数据。

旧post:

您需要添加对使用bodyParser.urlencodedparsing表单中给定的数据的支持:

 var express = require('express') var bodyParser = require('body-parser') var app = express() // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) 

最后一行添加了应用程序/ x-www-form-urlencoded内容types的表格主体分析。

body-parser中间件将表单体parsing成服务器端的variablesreq.body

如果用户不在该URL(如果他们是,你可以完全省略action属性),你的action=''可能应该是action='/logadd' 。 其次,对application/json HTML表单提交没有本地支持,所以你需要使用application/x-www-form-urlencoded body parser middleware代替(或者另外)。