在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       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:
- 生成的html不正确。
- 表单发布数据的url不是正确的
- 服务器端无法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代替(或者另外)。