node.js - Jade 表单返回空主体以表达 Node.js POST 请求

标签 node.js forms express pug form-submit

作为训练的一部分,我使用 Jade 与express 和node.js 来创建飞行日志数据库的前端。我已确认我的inputs have names ,我的正文解析器是 set to application/json ,并且我的路线出现 after my middleware declarations ,但我的 req.body 对象仍未定义。我的问题是为什么。 这是我的 Jade 形式中的一个字段:

.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')

每个字段都会重复间隙下方的所有内容。提交按钮:

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

按钮 div 与“数据角色”div 对齐。相关路线:

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

以及相关 Controller :

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

目前我只是尝试打印第一个字段并将用户重定向到飞行日志。我在多个应用程序中遇到此问题。我必须知道如何将用户输入推送到数据库中。非常感谢任何和所有的帮助。

最佳答案

编辑1:

您是否尝试过验证请求是否使用与 POST http 请求一起发送的 HobbsOut 值发送到正确的 URL(我们的 '/logadd')案例)使用Fiddler?

你能提供生成的表单html而不是jade模板吗?因为 Jade 模板引擎本身与您面临的问题无关。您的问题可能是以下三个问题之一:

  1. 生成的 html 不正确。
  2. 表单发布数据的网址不正确
  3. 服务器端无法解析 HTTP POST 请求中发送的数据。

旧帖子:

您需要使用 bodyParser.urlencoded 添加对解析表单内给出的数据的支持。 :

var express = require('express')
var bodyParser = require('body-parser')
var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

最后一行添加表单正文解析,内容类型为 application/x-www-form-urlencoded。

body-parser中间件将表单主体解析为服务器端变量req.body

关于node.js - Jade 表单返回空主体以表达 Node.js POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096758/

相关文章:

node.js - react 路由与快速路由

node.js express 模块加载不正确

node.js - DynamoDB - 获取不起作用

javascript - webpack 4 和 webfonts-loader

javascript - 表单不将数据保存到 mySQL 表中

mysql - 分页和表单标签问题

javascript - Node.js:尝试使用 NSSM 将永远监视器中包装的脚本安装为 Windows 服务

javascript - 有什么方法可以在 express 中使用 next() 有条件地跳过中间件?

html - Google Chrome 表单自动填充及其黄色背景

node.js - 在 Express 中将菜单呈现为 Jade View 部分