2014-05-08 69 views
4

我正在使用Expressjs版本4.我在req.param上获得'undefined'。这是我的例子: app.js正在获取req.param undefined

var express = require('express'); 
var bodyParser = require('body-parser'); 
var newdata = require('./routes/new'); 
........................ 
...................... 
app.use(bodyParser()); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 

app.use('/new', newdata); 

./routes/new

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

router.get('/', function(req, res){ 
    res.render('newdata', { 
     title: 'Add new data' 
    }) 
}); 

router.post('/', function(req, res){ 
    console.log(req.param['email']); 
    res.end(); 
}); 

module.exports = router; 

newdata.html

<form action="/new" role="form" method="POST"> 
      <div class="form-group"> 
       <label for="exampleInputEmail1">Email address</label> 
       <input type="email" class="form-control" name="email" placeholder="Enter email"> 

我也试图与req.bodyreq.params,但得到的答复是还是一样。

+0

您是否验证过您的表单实际上是以'application/x-www-form-urlencoded'而不是'multipart/form-data'的形式发送的? – mscdex

+0

你有帖子没有得到..为什么。 –

回答

19

req.params指您的路径路径中的变量。

app.get("/posts/:id", ... 

// => req.params.id 

后的数据可以通过req.body

app.post("/posts", ... 

// => req.body.email 

这里假设你正在使用的bodyParser中间件引用。

然后有req.query,对于那些?query=strings


您可以使用req.param()作为上述3项中的任意一项。查找顺序是params,body,query

+2

'req.param()'该函数已经检查'req.params'(“路径路径中的变量”),'req.body'和'req.query'。 – mscdex

+0

嗨, 假设“/ mobile/custom/******/deviceVersion /:deviceType”是我的要求。 你能告诉我如何检查“deviceType”对未定义? –

+0

为什么'req.param()'对我来说是空的(使用查询字符串)? –

0

param是一个函数,而不是一个对象。因此,您需要使用req.param('email');

+3

仍显示undefined – pyprism

+1

这没有什么区别。 –