使用Express.js在Node.js中获取POST参数

时间:2013-02-09 23:19:52

标签: node.js http post express

我正在尝试使用Express请求后获取一些POST参数,但我无法获取数据。这是我的app.configure

app.configure(function() {
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');

    app.use(express.bodyParser());
    app.use(express.methodOverride());

    app.use(gzippo.staticGzip(__dirname + '/public'));
    app.use(gzippo.compress());
});

在POST HTTP请求之后,我尝试在控制台中输出它:

console.log(req.body);

对象始终为空。

我对忘记了什么有任何想法?

3 个答案:

答案 0 :(得分:4)

您必须使用 req.body 来检索身体参数。您也必须在HTML代码中使用表单。

示例:

<form action="myaction" method="post">
  <input name="address" id="address" type="text" />
  <button type="submit" value="Send" />
</form>

...

以您的形式:

var address = req.body.address; //get address value

答案 1 :(得分:3)

我唯一需要做的就是从这段代码中添加body解析器和app.post行:

app.use(express.static(__dirname + '/public'))
    .use(express.favicon())
    .use(express.bodyParser())
    .use(express.cookieParser(COOKIE_P))
    .use(express.session());

app.post('/',function(req,res){
    res.writeHead(200,{"content-type":"text/html;charset=UTF8;"});
    res.end("POST");
    console.log(req.body);
});

我的失败是尝试从app.get而不是app.post获取值。

答案 2 :(得分:1)

尝试交换以下行:

app.use(express.bodyParser());
app.use(express.methodOverride());
相关问题