从Nodejs ExpressJS路由显示到EJS视图

我从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,next) => {
    let rezz = Number(req.body.num1) + Number(req.body.num2)   

    res.status(200).json({
      result: rezz
    });
 }

我得到这个json:

{"result":46} 

我的问题是,为什么结果不显示在<p>元素中,而是显示为json,以及如何在其中显示。

谢谢!

meng0827 回答:从Nodejs ExpressJS路由显示到EJS视图

在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
    });
 }
,

您可以再次在calc函数中渲染视图

exports.calc = (req,next) => {
    let rezz = Number(req.body.num1) + Number(req.body.num2)   
     return res.render('calc',{page:'Calculator',result: rezz });
 }

如果要使用json,则必须在表单提交和发送请求时调用ajax函数,并在视图中显示返回的响应

本文链接:https://www.f2er.com/3146454.html

大家都在问