我想将此表单的数据“/ 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文件更好的方法。我希望无论谁给出答案,请给出一个彻底的答案。如果我正在做一些不好的做法,请告诉我。
更新:我需要我需要的一切,问题在于代码而不是设置。
答案 0 :(得分:0)
首先,您需要在项目中安装ejs
npm isntall ejs --save
其次,你需要告诉快递应用你使用ejs作为你的模板引擎,在中间件之前使用下面的代码片段
app.set('view engine', 'ejs');
第三,要在代码中呈现变量,您需要使用此语法
<%= tagline %>
,确保你的模板在views文件夹
中使用模板引擎比使用sendfile()更好,所以你是正确的方向,但是,使用express的首选模板引擎是Pug但是使用ejs它完全没问题
的更多细节答案 1 :(得分:0)
我忘记了ejs引擎中变量传递的等号 - -__-, 这应该是这样的:
<h1> <%= from %> , <%= to %> </h1>