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

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

壳显示身体是空的和未定义的。

但是,当我改变post (在客户端和服务器端),一切都很好,我可以正确地得到参数。

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

如果您正在发出GET请求,那么URL参数不是body的一部分,因此不会被bodyParser中间件parsing。

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

为了从bodyParser得到params,你必须使用POST not 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访问的值的对象

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