Express和Body Parser未返回值

Express and Body-Parser not returning values

本文关键字:返回值 Parser Body Express      更新时间:2023-09-26

我对nodejs和express是个新手。我正在尝试使用body解析器从html页面获取POST值。我试着遵循SO中的几个建议,但无法使其对我起作用。

这是代码。任何建议都将不胜感激。提前谢谢。

Server.js

    var express = require('express');
    var mongoose = require('mongoose');
    var bodyParser = require('body-parser');
    var Subscribe = require('./models/subscribe');
    mongoose.connect('CREDENTIALS');
    var app = express();
    app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false }));
    var port = 3000;
    var router = express.Router();
    router.get('/', function(req, res) {
      res.json({ message: 'Test...' });
    });
    var subscribeRoute = router.route('/subscribe');
    subscribeRoute.post(function(req, res) {
      var subscribe = new Subscribe();
      subscribe.email = req.body.email_notify;
      console.log(subscribe);
      subscribe.save(function(err) {
        if (err)
            res.status(500).send(err);
        res.status(200);
      });
    });
    app.use('/api', router);
    app.listen(port);

index.html

    <form action="http://localhost:3000/api/subscribe/" method="POST" enctype="application/json">
    <input type="text" onfocus="if (this.value=='E-mail Address') this.value = ''" onblur="if (this.value=='') this.value = 'E-mail Address'" value="E-mail Address" id="email_notify" name="email_notify" />
    <button id="notify_me" ontouchstart="">Notify Me!</button><br/>
    </form>

谢谢Sujith

更改此

app.use(bodyParser.json(), bodyParser.urlencoded({ extended: false }));

到此

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

使<input type='submit'>而不是<button>,并从表单中删除enctype

此外,在Chrome打开开发人员工具、网络选项卡并检查请求是否已发送到所有的服务器