node express的bodyParser无法获取GET请求中的参数

时间:2012-12-23 14:35:15

标签: node.js parameters get express

我在客户端ajax一个GET请求:

$.ajax({
        url: '/update',             
        type: 'get',    
        data: {
            "key": key,
            "value": value
        },
        success: function (data, err) {

        }
    })

然后在节点侧,我想获取参数

var showParam = function (req, res) {
    if (req.body) {
        for (var key in req.body) {
            console.log(key + ": " + req.body[key]);
        }       
        res.send({status:'ok',message:'data received'});
    } else {
        console.log("nothing received");
        res.send({status:'nok',message:'no Tweet received'});
    }   
}
app.get('/update', function(req, res){
    showParam(req, res);
})

shell显示正文为空且未定义。

但是当我将get更改为post(在客户端和服务器端)时,一切正常,我可以正确获取参数。

我的代码有什么问题?我想念一下吗?

3 个答案:

答案 0 :(得分:11)

如果您发出GET请求,则URL参数不是正文的一部分,因此不会被bodyParser中间件解析。

要访问查询参数,只需引用req.query

即可

答案 1 :(得分:1)

要从bodyParser获取参数,您必须使用POST而不是GET。您的ajax请求和服务器调用都必须使用POST

http://expressjs.com/api.html#req.body

app.post('/update', function(req, res){
    showParam(req, res);
});

$.ajax({
        url: '/update',             
        type: 'POST',    
        data: {
            "key": key,
            "value": value
        },
        success: function (data, err) {

        }
    });

要获取GET参数,请使用url模块并使用query = url.parse(req.url, true).queryquery将包含一个对象,其值可通过query.foo

访问

答案 2 :(得分:1)

您可以使用req.query.keyreq.query.value访问服务器端获取请求的数据。

相关问题