我从calc.js路由器渲染calc.ejs像这样:
// calc.js router
router.get('/calc', function(req, res, next) {
res.render('calc', {page:'Calculator', menuId:'Calculator', result: ''});
});
我的calc.ejs是:
// calc.ejs view
<form action="/user/calc" method="post">
<input type="number" name="num1"/><br/>
<input type="number" name="num2"/>
<input type="submit" value="Submit"/>
</form>
<% if( result ){ %>
<p> Display result here!!! : < %= result %> </p>
<% } else{ %>
<h1>No Result</h1>
<% } %>
我有calc.js控制器,该控制器接受两个数字,将其计算并作为json返回,但我想在calc.ejs的段落元素中显示结果
// calc.js controller
exports.calc = (req, res, next) => {
let rezz = Number(req.body.num1) + Number(req.body.num2)
res.status(200).json({
result: rezz
});
}
我得到这个json:
{"result":46}
我的问题是,为什么结果不显示在<p>
元素中,而是显示为json,以及如何在其中显示。
谢谢!
答案 0 :(得分:2)
在ejs中:
< %= result %> // this is wrong
<%= result %> // this is right
在您的控制器中,您可以直接渲染视图,它应该是:
exports.calc = (req, res, next) => {
let rezz = Number(req.body.num1) + Number(req.body.num2)
res.render('calc',{
page:'Calculator',
menuId:'Calculator',
result: rezz
});
}
答案 1 :(得分:0)
您可以再次在calc函数中渲染视图
exports.calc = (req, res, next) => {
let rezz = Number(req.body.num1) + Number(req.body.num2)
return res.render('calc', {page:'Calculator', menuId:'Calculator', result: rezz });
}
如果要使用json,则必须在表单提交和发送请求时调用ajax函数,并在视图中显示返回的响应