req.body,req.query,req.params,req.param()取参数

nodejs的express框架为我们提供了四种方法来实现获取请求中的参数:

1.req.body
2.req.query
3.req.params
4.req.param()

1.req.body

通常用来解析POST请求中的数据
req.body不是nodejs默认提供的,需要载入中间件body-parser中间件才可以使用req.body
例如前台代码:

//jade模板
#signupModal.modal.fade
  .modal-dialog
    .modal-content
      form(method="POST",action="/user/signup")
        .modal-header 注册
        .modal-body
          .form-group
            label(for="signupName") 用户名
            input#signupName.form-control(name="user[name]",type="text")
          .form-group
            label(for="signupPassword") 密码
            input#signupPassword.form-control(name="user[password]",type="password")
        .modal-footer
          button.btn.btn-default(type="button",data-dismiss="modal") 关闭
          button.btn.btn-success(type="submit") 提交

后台代码:

var bodyParser = require('body-parser');
app.post('/user/signup',function (req,res) {
   var _user = req.body.user;
})

req.query

是由nodejs默认提供,无需载入中间件,此方法多适用于GET请求,解析GET请求中的参数
包含在路由中每个查询字符串参数属性的对象,如果没有则为{}
举例:

// GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse
req.query.order
// => "desc"
req.query.shoe.color
// => "blue"
req.query.shoe.type
// => "converse"

req.params

包含映射到指定的路线“参数”属性的对象

例如,如果你有route/user/:name,那么“name”属性可作为req.params.name。
nodejs默认提供,无需载入其他中间件

postget方式提交的表单的参数的获取,都可用req.params获取,但是需要注意的是:
假设现在我们以Post方式提交表单,在后台我们要获取到userid这个参数

我们提交的路径是/user/signup?1111userid=1122

这时如果我们通过req.params.userid获取到的并不是post表单提交上来的参数,这时因为req.params包含映射到指定的路线“参数”属性的对象,所以它在解析参数的时候包含URL中的路由,它获取的顺序是:
1.url中路由参数
2.post请求中提交参数
3.get请求中的参数
这里获取到的是1111,

如果提交的路径为:/user/signup?userid=1122
req.params.userid获取到的就是post提交的参数

req.param()

此方法被弃用,请看官方解释

Deprecated. Use either req.params, req.body or req.query, as applicable.
翻译:被弃用,用其他三种方式替换

你可能感兴趣的:(js,ajax)