如何在express.js应用程序中获取流程POST数据?

时间:2016-11-29 22:05:40

标签: javascript node.js

页面结构如下:

index.js
 - start.js (input form customization)
 - start.ejs (input form)
 - page.js
 - page.ejs

我有简单的表单和router.post我渲染它的内容在渲染的page.ejs上对用户可见。

start.js内容:

router.post('/page', function(req,res))
{
    var somedata = req.body.inputForm;
    res.render('page', {somedata : somedata});
}

我想在page.js中访问这些数据,以便我可以处理它。怎么做?

2 个答案:

答案 0 :(得分:1)

初始化

  1. mkdir SO-40876646
  2. npm install -g express-generator
  3. express --view=ejs .
  4. npm install
  5. npm start
  6. 导航到http://localhost:3000并验证网站加载(标准快递网站有一个非常简单的标题说快递)
  7. 设置中间件

    Express中的所有中间件都是通过单个函数调用构建的,其中包含三个参数 - request response next

    • 请求是请求对象,其中包含用户的详细信息。
    • 响应是响应对象,可以将详细信息发送回用户。
    • 下一步是完成处理后调用的回调 - 为您的中间件提供开箱即用的异步支持。

    出于我们的目的,我们将展示路由器和我们的中间件的服务器端配置以演示其用途。

    在我们的routes/index.js文件中,我们创建了一个 pageProcessor 函数;这被挂在我们的页面路由器中,如下所示:

    var express = require('express');
    var router = express.Router();
    
    /* GET home page. */
    router.get('/', function(req, res, next) {
      res.render('index', { title: 'Express' });
    });
    
    router.get('/page', function(req, res) {
        res.render("page", { title: 'Express', information: "undefined"})
    });
    
    router.post('/page', pageProcessor, function(req, res) {
        res.render("page", {title: 'Express', information: req.params.information})
    })
    
    function pageProcessor(req, res, next) {
        req.params.information = req.body.information.toUpperCase();
    
        next();
    }
    
    module.exports = router;
    

    我们的处理函数有机会在渲染回调之前运行,处理我们的参数并将它们放在我们期望的格式中。在我们的示例中,我们将信息字段转换为大写并返回,但您可以利用此机会log a user invalidating JSONupdate a database。关键点是参数来自req.body和should not be assumed to be valid

    这个例子很简单,只能用作踩踏点。您应该查看着名的middleware的实施情况,例如CompressionCookie-Session,以获得有关此方面的进一步指导。

    如果您愿意,我可以使用此代码并将其粘贴到回购中,供您自行拉动和玩耍。

    您可以阅读有关authoring middleware on the expressjs website的更多信息。

答案 1 :(得分:0)

在你的

里面
  

page.ejs

文件您可以使用 include 标记执行以下操作:

<script>    
  var data= <%= somedata  %> ;
  <% include page.js %>
</script>

然后你可以在page.js中定义'data'变量。