【问题标题】:The node express's bodyParser can't get the parameter in the GET requestnode express的bodyParser获取不到GET请求中的参数
【发布时间】:2012-12-23 14:35:15
【问题描述】:

我在客户端 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(在客户端和服务器端),一切正常,我可以正确获取参数。

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

【问题讨论】:

    标签: node.js parameters get express


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        为了从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 访问

        【讨论】:

        • 那么,如果我想从服务器端的get请求中获取参数,我应该怎么做呢?
        • 非常感谢,但我想知道为什么bodyParser 也不能只解析get 参数?我认为如果它可以完成这项工作,它会更好
        • 不是真正的主题,但是您如何将参数 fooPOST 和参数 fooGET 推迟?请投票/选中此作为答案。 :)
        猜你喜欢
        • 1970-01-01
        • 2016-05-04
        • 2022-11-07
        • 2021-02-11
        • 1970-01-01
        • 2015-07-05
        • 2020-08-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多