将表单数据发送到另一页快递

时间:2017-12-12 21:35:17

标签: javascript node.js forms express ejs

我想将此表单的数据“/ rentingForm”(表单操作)发送到另一个页面,并将其呈现在“rentingForm”(显示数据的页面)。表单位于index.ejs页面。

这是我的app.js代码段:

app.use(bodyParser.urlencoded({ extended: true }));
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
extended: true
})); 

app.get('/', function(req, res){
  res.render('index');
});

app.get('/rentingForm', function(req, res) {
  res.sendfile("./index.html");
});

app.post('/rentingForm', function(req, res){
 // var from = req.body.from;
 // var to = req.body.to;

 res.render('rentingForm', {
    from:req.body.from,
    to:  req.body.to
 });
 // res.send(from+ "," + to); //This works fine ! but without rendering 
});

这是我在index.ejs中的表单:

<form action="/rentingForm" method="POST">

    <label class="control-label" for="text-input">From </label>
    <input class="form-control" type="date" name="from"> //from input
    <label class="control-label" for="password-input" id="to">To </label>
    <input class="form-control" type="date" name="to">   //to input
    <input class="btn btn-default" type="submit" value="Search" id="search">
    </input>
</form>

以下是我在rentingForm.ejs中的显示方式:

<h1> <% from %> ,<% to %>    </h1>

但它没有显示任何内容...... 我认为有一种比通过sendfile()方法发送HTML文件更好的方法。我希望无论谁给出答案,请给出一个彻底的答案。如果我正在做一些不好的做法,请告诉我。

更新:我需要我需要的一切,问题在于代码而不是设置。

2 个答案:

答案 0 :(得分:0)

首先,您需要在项目中安装ejs

npm isntall ejs --save

其次,你需要告诉快递应用你使用ejs作为你的模板引擎,在中间件之前使用下面的代码片段

app.set('view engine', 'ejs');

第三,要在代码中呈现变量,您需要使用此语法 <%= tagline %>

,确保你的模板在views文件夹

使用模板引擎比使用sendfile()更好,所以你是正确的方向,但是,使用express的首选模板引擎是Pug但是使用ejs它完全没问题

使用ejs Use EJS to Template Your Node Application

的更多细节

答案 1 :(得分:0)

我忘记了ejs引擎中变量传递的等号 - -__-, 这应该是这样的:

 <h1> <%= from %> ,  <%= to %>    </h1>