передать переменную в файл ejs из почтового запроса express.js - PullRequest
0 голосов
/ 12 января 2019

После отправки формы я хочу отобразить ту же страницу, но с надписью «сообщение успешно отправлено» над формой. С этим кодом я получаю «ошибка ссылки, сообщение не определено», что мне кажется странным, когда я использую тот же код, но в запросе 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>

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Заключение на основе ответа @Chiller. Если вы не хотите использовать <% if(typeof msg !== 'undefined') { %>, вам нужно определить msg переменную в методе .get, например:

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

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

затем вы можете использовать <p><%= msg %></p> в вашем файле .ejs, не проверяя, является ли переменная неопределенной.

Но я предпочитаю и ответ @Chiller.

0 голосов
/ 12 января 2019

Вам нужно проверить, определена ли переменная ( msg ), в запросе .get("/contact") вы не отправляете msg в качестве параметра, поэтому вы получаете ошибка

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