节点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
来访问您的数据以获取服务器端的请求。
- 节点js接收多个消息参数未定义
- 是否需要将相同数量的parameter passing到函数中定义的javascript函数中
- 如何导入一个Typescript 1.0函数,如node.js require和arguments?
- javascript(node.js)| 在callback函数的范围内使用外部参数
- 通过webpack和渲染编译之前,将一个参数从Express路由器传递给React
- 如何获取express.js中的所有参数(post / get / etc)
- Casperjs – 在通过节点运行casper_script时无法保存cli选项
- Express框架app.post和app.get
- 在Windows上传递node.js脚本的参数