【问题标题】:Express post form from html form req.body is empty来自 html 表单 req.body 的快递表单为空
【发布时间】:2020-08-07 04:48:08
【问题描述】:

Express req.body 返回空

我不知道为什么它是空的,我添加了正文解析器,还看到其他帖子没有解决我的问题,我是新手,下面是我的代码:

我检查了许多其他地方,也检查了这里 (Node.js/Express form post req.body not working)

我的 app.js:

         var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');

    var bodyParser = require('body-parser')

    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    var notesRouter = require('./routes/notes');


    var app = express();

    app.use(bodyParser.urlencoded({extended:true}));
    app.use(bodyParser.json());
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    //app.set('view engine', 'jade');
    app.set('view engine', 'ejs');




    app.use(logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));




    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    app.use('/notes', notesRouter);


    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      next(createError(404));
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    module.exports = app;

我的 html 表单:

     <form action="/notes" method="POST" enctype="application/x-www-form-urlencoded">
        <input placeholder="Title"  type="text"> <br />
        <textarea placeholder="Details"></textarea> <br />
        <input type="submit" value="Save" />
      </form>

以及我张贴表格的笔记路线:

        var express = require('express');
    var router = express.Router();

    /* GET home page. */
    router.get('/', function(req, res, next) {
    res.render('notes', { title: 'Express' });
    });
    /* POST home page. */
    router.post('/', function(req, res, next) {
        console.log('------------------------------------------posted notes----');
        console.log(req);
        console.log(req.body);
        //console.log(res);
        console.log('-----------');
        //console.log(req);
    //res.render('notes', { title: 'Express' });
    });

    module.exports = router;

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    您的表单中缺少name 属性

    <form action="/notes" method="POST" enctype="application/x-www-form-urlencoded">
      <input placeholder="Title"  type="text" name='title'> <br />
      <textarea placeholder="Details" name='details'></textarea> <br />
      <input type="submit" value="Save" />
    </form>
    

    【讨论】:

    • 这就是答案。必须有一个键(名称)来分配一个值。
    猜你喜欢
    • 2020-10-19
    • 2022-01-26
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多