【问题标题】:pass variable to ejs file from express.js post request从 express.js 发布请求将变量传递给 ejs 文件
【发布时间】:2019-06-07 03:12:29
【问题描述】:

提交表单后,我想呈现同一页面,但在表单上方显示“消息发送成功”消息。使用此代码,我得到“参考错误,未定义味精”,当我使用相同的代码但在 GET 请求中它完美地工作时,我觉得这很奇怪。 GET 和 POST 请求之间有不同的技术吗?

const express = require('express');
const app = express();
app.set('view engine', 'ejs');

app.get('/contact', (req, res) => {
    res.render('contact');
});

app.post('/send', (req, res) => {
    res.render('contact', {msg: 'Message sent successfully!'});
});
<section class="section-b">
                <div>
                    <p><%= msg %></p>
                    <form action="send" id="contact-form" method="POST">
                        <input type="text" name="name" placeholder="Name">
                        <input type="email" name="emailContact" placeholder="E-mail"><br>
                        <textarea name="message" id="message" rows="10" placeholder="Your message here..."></textarea><br>
                        <button type="submit">Submit</button>
                    </form>
                </div>
 </section>

【问题讨论】:

  • 我有同样的问题...我无法将变量从发布请求传递给 ejs 文件

标签: node.js express ejs


【解决方案1】:

根据@Chiller的回答得出结论,如果不想使用&lt;% if(typeof msg !== 'undefined') { %&gt;需要在.get方法中定义msg变量,例如:

app.get('/contact', (req, res) => {
    res.render('contact', {msg: '')};
});

app.post('/send', (req, res) => {
    res.render('contact', {msg: 'Message sent successfully!'});
});

然后,您可以在.ejs 文件中使用&lt;p&gt;&lt;%= msg %&gt;&lt;/p&gt;,而无需检查变量是否未定义。

但我也更喜欢@Chiller 的回答。

【讨论】:

    【解决方案2】:

    您需要检查变量 (msg) 是否已定义,在 .get("/contact") 请求中您没有将 msg 作为参数发送,这就是为什么您收到错误

     <% if(typeof msg !== 'undefined') { %>
        <p><%= msg %></p>
     <% } %>
    

    【讨论】:

    • 很高兴它有帮助:)
    • 这是否意味着我们可以在.get请求中注册变量msg,然后我们可以在.post请求中使用该变量,实际上我们不需要使用if(typeof msg !== 'undefined').ejs 文件中?
    • 如果你多次渲染一个视图,有时有变量而其他没有,你需要添加一个条件并检查每个渲染是否存在该变量
    • 我的知识正在扩展:)。谢谢大家!
    猜你喜欢
    • 2017-08-17
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2014-01-30
    • 2021-03-25
    • 2020-08-24
    相关资源
    最近更新 更多