提交表单后,我想呈现同一页面,但在表单上方显示“消息已成功发送”消息。通过此代码,我得到“引用错误,未定义msg”,当我使用相同的代码时发现它很奇怪,但是在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>
答案 0 :(得分:3)
您需要检查是否定义了变量( msg ),在.get("/contact")
请求中,您没有发送 msg 作为参数,因此为什么会出现错误
<% if(typeof msg !== 'undefined') { %>
<p><%= msg %></p>
<% } %>
答案 1 :(得分:1)
基于@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的答案。