2014-05-08 70 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

這沒有什麼區別。 –