Express форма сообщения из html форма req. Body пуста - PullRequest
2 голосов
/ 07 августа 2020

Express req.body возвращает пустой

Я не мог понять, почему он пуст, я добавил парсер тела, а также вижу другие сообщения, ответы на которые нет, моя проблема решена, я новичок в этом ниже - мой код :

Я проверил много других мест, а также здесь ( Node.js / Express form post req.body не работает )

My 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;

1 Ответ

3 голосов
/ 07 августа 2020

В вашей форме отсутствуют 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...