通过node.js express中的body-parser发布表单数据时,数据始终为“未定义”

时间:2019-07-01 18:15:07

标签: node.js forms express parsing body-parser

为清楚起见,我将表格简化为以下内容:

      <form method="post" action="/form" id="testform" enctype="application/x-www-form-urlencoded" name="testform" novalidate>
          <input type="text" class="form-control" id="name" >
          <button type="submit" class="btn btn-dark btn-lg">Generate XML</button>
      </form>

在我的主要js文件中,我具有以下内容:

var bodyParser = require('body-parser')

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: true })

并且我在这里接收数据(视情况而定):

.post('/form', urlencodedParser, function (req, res) {
    res.send('welcome, ' + req.body.name)
    console.log(req.body)
  })

我得到的只是“欢迎,未定义”,并且日志显示为空-{}

这使我感到不安,我如何检查发送的内容?调试这是疯狂的事情!

3 个答案:

答案 0 :(得分:4)

我认为您缺少name元素上的<input>属性:

<input type="text" class="form-control" id="name"  name="name">

您已经设置了id,但是只能用于CSS选择器(#name),链接(访问#name将选择该输入)和<label>元素(使用for="name")。

答案 1 :(得分:1)

元素通过服务器端的name参数识别。您需要在输入标签中添加名称属性。

答案 2 :(得分:1)

给输入元素一个name属性作为"name",代码将正常工作。