节点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).query
。 query
将包含可通过query.foo
访问的值的对象
您可以通过使用req.query.key
和req.query.value
来访问您的数据以获取服务器端的请求。