【问题标题】:HTML form send empty content to serverHTML 表单向服务器发送空内容
【发布时间】:2018-05-23 19:55:19
【问题描述】:

我写了一个Node项目,有一个视图页面供用户获取信息但HTML表单发送空内容,我多次与邮递员检查并成功保存信息,我用post方法发送:

{
"name" : "john" , 
"family" : "swift",
"meliCode" : "12345" }

并返回它(它的意思是保存到 db):

{
"_id": "5b05bd2309d3c30404ec5b03",
"name": "john",
"meliCode": "12345",
"family": "swift",
"__v": 0

}

但是当我使用 HTML 表单发送信息时,表(集合)中的字段为空,只需返回:

{
"_id": "5b05bd2309d3c30404ec5b03",
"__v": 0  }

<form action="/api" method="post">
  <div class="container">
    <h1>Register</h1>
    <p>Please fill in this form to create an account.</p>
    <hr>

    <label for="name"><b>Name</b></label>
    <input id="name" type="text" placeholder="Enter Name" name="name" required>

    <label for="family"><b>Family</b></label>
    <input id="family" type="text" placeholder="Enter Family" name="family" required>

    <label for="meliCode"><b>MeliCode</b></label>
    <input id="meliCode" type="text" placeholder="Enter Melicode" name="meliCode" required>
    <hr>
    <p>By creating an account you agree to our <a href="#">Terms & Privacy</a>.</p>

    <button type="submit" class="registerbtn">Register</button>
  </div>
</form>

并在服务器端使用 '/api' 路由(console.log return '{}'):

const express = require('express');
const router = express.Router();
const user = require('../models/Users');

router.get('/' , function (req , res , next) {
  res.send('get')
});
router.post('/' , function (req , res , next) {
  user.create(req.body).then(function (user) {
    res.send(user);
  }).catch(next);
});

module.exports = router;

【问题讨论】:

  • 我不明白这如何与 Postman 一起工作。您似乎没有配置正文解析器中间件。
  • @Quentin 嘿身体,我无法理解您的评论...我编辑了我的帖子,请再次检查,看看对您有帮助
  • 您的 /action 路径是否正确?

标签: javascript html node.js express


【解决方案1】:

您似乎没有设置正文解析器。您将需要使用 body-parser 中间件来访问发布请求正文中的数据。更多关于可用中间件的信息here

这是 body-parser 文档提供的示例

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

var app = express()

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

// parse application/json
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  res.end(JSON.stringify(req.body, null, 2))
})

【讨论】:

  • 特别感谢它的工作,不是相同的代码,但问题在于 body -parser 和 urlencoded
猜你喜欢
  • 2016-10-06
  • 2013-10-17
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2016-07-19
  • 2010-10-26
  • 1970-01-01
相关资源
最近更新 更多