req.body无法获取数据post数据
发布于 10 年前 作者 lming 27568 次浏览 最后一次编辑是 8 年前

reg页面post过去的数据name,password,email这两项都是undefined的,但是写在app2.js中console.log(util.inspect(req.body.name)); //这里有值。 又是有值的。请问各位大神,是不是routes(app); 这里出问题了。要怎么解决的。。

//app2.js var express=require(‘express’); var path=require(‘path’); var http=require(‘http’); var util=require(‘util’); var routes=require(’./routes’); var MongoStore=require(‘connect-mongo’)(express); //设置connect-mongo; var settings=require(’./settings’); var flash=require(‘connect-flash’); var crypto=require(‘crypto’); var user=require(’./models/user’);

var app=express();

//设置参数; app.set(‘port’,process.env.PORT||3000);//端口设置; app.set(‘views’,__dirname+’/views’); app.set(‘view engine’,‘ejs’); //设置中间件 app.use(flash()); app.use(express.favicon()); app.use(express.logger(‘dev’)); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.cookieParser()); app.use(express.session({ secret:settings.cookieSecret, key:settings.db, cookie:{maxAge:100060602430}, store:new MongoStore({ db:settings.db }) })); app.use(express.static(path.join(__dirname,‘public’))); if (‘development’ == app.get(‘env’)) { app.use(express.errorHandler()); } //app.get(’/’,routes.index); routes(app); // 将请求都放到路由中处理。 //这里出问题,过来的数据都是undefind的。 /app.get(’/login/:user’,function(req,res){ console.log(req.params.user); res.render(‘login’,{title:‘hello’}); });/ app.get(’/test’,function(req,res){ res.render(‘testing’,{title:‘testing’}); }); app.post(’/test’,function(req,res){ console.log(util.inspect(req.body.name)); //这里有值。 res.render(‘testing’,{title:‘testing’}); }) var os=require(‘os’);

var ciphers = crypto.getCiphers();

http.createServer(app).listen(app.get(‘port’),function(){ console.log(‘Success!!’); /* console.log(os.hostname()); console.log(ciphers);*/ })

//routes/index.js /*

  • GET home page. */ // /:首页,/login:登录,/reg:用户注册,/post:发布文章,/logout:登出,/admin:管理员

var util=require(‘util’); /exports.index = function(req, res){ res.render(‘index’, { title: ‘Express’ ,word:“www.google.com”}); };/ var crypto=require(‘crypto’); var User=require(’…/models/user’);

//下面这一项,将来自app的请求处理。 module.exports=function(app){ app.get(’/’,function(req,res){ res.render(‘index’,{title:‘Express’}); }); /* app.get(’/:user’,function(req,res,next){ //console.log(req.params.user); console.log(‘登录成功!’); next(); });*/ app.get(’/logout’,function(req,res){

}); app.get(’/login/:user’,function(req,res){ console.log(req.params.user); res.render(‘login’,{title:req.params.user}); }); app.get(’/reg’,function(req,res){

res.render(‘reg’,{title:‘用户登录’}); }); //提交数据所以需要使用post方法; app.post(’/login’,function(req,res){

}); app.get(’/login’,function(req,res){ res.render(‘login’,{title:‘用户登录’}); }); app.post(’/reg’,function(req,res){

var name = req.body.name, password = req.body.password, password_re = req.body[‘password-repeat’]; console.log(util.inspect(req.body.password)); //检验用户两次输入的密码是否一致 if (password_re != password) { req.flash(‘error’, ‘两次输入的密码不一致!’); return res.redirect(’/reg’); } //生成密码的 md5 值 //console.log(req.body.password); var md5 = crypto.createHash(‘md5’), password = md5.update(req.body.password||‘12345’).digest(‘hex’); var newUser = new User({ name: req.body.name||‘google’, password: password, email: req.body.email||“baidu@baidu.com” }); //检查用户名是否已经存在 User.get(newUser.name, function (err, user) { if (user) { req.flash(‘error’, ‘用户已存在!’); return res.redirect(’/reg’);//用户名存在则返回注册页 } //如果不存在则新增用户 newUser.save(function (err, user) { if (err) { req.flash(‘error’, err); return res.redirect(’/reg’); } req.session.user = user;//用户信息存入 session req.flash(‘success’, ‘注册成功!’); res.redirect(’/’);//注册成功后返回主页 }); });

}); app.get(‘post’,function(req,res){ //获取文章数据; }); app.post(‘post’,function(req,res){ //提交文章数据; }); app.get(’/admin’,function(req,res){

}); app.post(’/admin’,function(req,res){

});

}

3 回复

问题题找到了,在模板中把name值写到了label中而不是写到input中。

我也遇到了类似的问题,不过我是把input写成了imput,真是罪过罪过,还搞了整整半个星期。

你好,我今天遇到了这个问题,已解决。 原因是我在用bodyParser之前就已经用了路由导致的,希望能帮到你。

回到顶部