我在客户端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
(在客户端和服务器端)时,一切正常,我可以正确获取参数。
我的代码有什么问题?我想念一下吗?
答案 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).query
。 query
将包含一个对象,其值可通过query.foo
答案 2 :(得分:1)
您可以使用req.query.key
和req.query.value
访问服务器端获取请求的数据。