Express.js - bodyParser не взема данни от форма


1

съдържание на app.js

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app;

часто от съдържанието на user.js

router.post('/register', function(req, res, next){ var name = req.body.name; console.log(name); var email = req.body.email; var username = req.body.username; var password = req.body.password; var password2 = req.body.password2; });

Всичко във файловете е наред. Но когато постна данни във формата, нищо не се получава. Съдържанието на req.body е {}, а на req.body.name, req.body.email ... - undefined.

Просто не мога да повярвам че с ExpressJS не мога да запазя данни от форма. Моля за помощ!




Отговори



3
input полетата във формата имат ли зададен name?

от shoko (1073 точки)


1
ДА човече имат, всичко е като по конец в html файловете. Просто умът ми не го побира. Тотолно съм изчерпан откъм идеи.

от ivan.yosifov (679 точки)


2
Пробвай да промениш extended option-a на true, демек app.use(bodyParser.urlencoded({ extended: true}));



1
Не, нищо продължава да дава undefined.

от ivan.yosifov (679 точки)


2
Погледни си Network tab-a, когато събмитваш формичката. Ако праща данните със заявката, проблема ти е някъде по сървъра(можеш да пробваш bodyParser-a на connect). Ако не ги праща - проблема е някъде по markup-a ти.

Ако това не свърши работа, пусни някъде целия проект да му метнем едно око :)

от kon.simeonov (5238 точки)


1
Значи сега забелязах, че когато на формата има enctype="multipart/form-data" и тогава req.body e празен обект. Сега остава да разбера тази multer как работи

от ivan.yosifov (679 точки)

1
multipart/form-data е стойност на enctype, която задаваш, когато искаш да изпращаш файлове(т.е. binary format) през формата.

от kon.simeonov (5238 точки)