胖鸭 2011-04-19 00:38
浏览 506
已采纳

如何检索 POST 查询参数?

Here is my simple form:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

Here is my Express.js/Node.js code:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

I tried sReq.query.email or sReq.query['email'] or sReq.params['email'], etc. None of them work. They all return undefined.

When I change to a Get call, it works, so .. any idea?

转载于:https://stackoverflow.com/questions/5710358/how-to-retrieve-post-query-parameters

  • 写回答

18条回答 默认 最新

  • Lotus@ 2012-08-17 15:30
    关注

    Things have changed once again starting Express 4.16.0, you can now use express.json() and express.urlencoded() just like in Express 3.0.

    This was different starting Express 4.0 to 4.15:

    $ npm install --save body-parser
    

    and then:

    var bodyParser = require('body-parser')
    app.use( bodyParser.json() );       // to support JSON-encoded bodies
    app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
      extended: true
    })); 
    

    The rest is like in Express 3.0:

    Firstly you need to add some middleware to parse the post data of the body.

    Add one or both of the following lines of code:

    app.use(express.json());       // to support JSON-encoded bodies
    app.use(express.urlencoded()); // to support URL-encoded bodies
    

    Then, in your handler, use the req.body object:

    // assuming POST: name=foo&color=red            <-- URL encoding
    //
    // or       POST: {"name":"foo","color":"red"}  <-- JSON encoding
    
    app.post('/test-page', function(req, res) {
        var name = req.body.name,
            color = req.body.color;
        // ...
    });
    

    Note that the use of express.bodyParser() is not recommended.

    app.use(express.bodyParser());
    

    ...is equivalent to:

    app.use(express.json());
    app.use(express.urlencoded());
    app.use(express.multipart());
    

    Security concerns exist with express.multipart(), and so it is better to explicitly add support for the specific encoding type(s) you require. If you do need multipart encoding (to support uploading files for example) then you should read this.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(17条)

报告相同问题?

悬赏问题

  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写