6

我在客户端 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);
})

外壳显示主体为空且未定义。

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

我的代码有什么问题?我错过了什么吗?

4

3 回答 3

11

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

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

于 2012-12-23T16:26:29.953 回答
2

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

于 2013-11-11T07:29:52.567 回答
1

为了从bodyParser您那里获取参数,必须使用POSTnot 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).query. query将包含一个对象,其值可通过以下方式访问query.foo

于 2012-12-23T14:38:15.553 回答