javascript - 通过 express 在浏览器中设置警告框
问题描述
我正在使用快递按nodemailer
模块发送电子邮件。我的代码如下:
app.post('/', (req, res) => {
const output = `
<p>You have new one contact request</p>
<h3>Contact Details</h3>
<ul>
<li>Name:${req.body.name}</li>
<li>Email:${req.body.email}</li>
</ul>
<h3>Message</h3>
<p>${req.body.message}</p>
`;
// create reusable transporter object using the default SMTP transport
let transporter = nodeMailer.createTransport({
host: "mail.gmail.com",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'mymail@gamil.com', // generated ethereal user
pass: '2020' // generated ethereal password
},
tls: {
rejectUnauthorized: false
}
});
// send mail with defined transport object
let mailOptions = {
from: "mymail@gamil.com", // sender address
to: "myfriend@gmail.com", // list of receivers
subject: "the subject", // Subject line
html: output // html body
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
// , info.res
console.log("Message sent: %s", info.messageId);
console.log("Preview URL: %s", nodeMailer.getTestMessageUrl(info));
res.render('index', { msg: 'email has been sent' });
res.redirect('back');
});});
单击submit
按钮后,以下代码将重定向到联系页面:
res.redirect('back');
然后通过此代码显示一条消息:
res.render('index', { msg: 'email has been sent' });
现在我的目标是在警告框中显示文本,而不是通过上述代码显示文本。我尝试过的是:
res.render('index','<script>alert("email has been sent")</script>');
但这根本不起作用。顺便说一句,我没有使用ajax
. 那么有什么想法或解决方案吗?
解决方案
直接从服务器响应运行脚本<script>doSomethingMaybeBad();</script>
不太可能在现代浏览器中运行,因为它可能被用作攻击。无论如何,一目了然,您似乎并没有<html>...</html>
通过这些请求在客户端加载整个页面。
我建议收听来自客户端的 ajax 响应,然后显示警报。在没有看到所有代码的情况下,这是一个粗略的想法:
代替:
res.render('index','<script>alert("email has been sent")</script>');
使用 JSON 响应,或与您之前使用的格式相同的响应,如下所示:
{ msg: 'email has been sent', status: 200 }
然后在你的客户端代码中,替换这样的东西(只是猜测你有什么,因为你没有发布客户端示例):
$('msg').html(response.msg)
和:
if (response.status === 200) {
alert(msg.msg);
// consider redirecting here if needed?
} else {
// show error, jQuery in this example however may be different for your current
$('msg').html(response.msg)
}
推荐阅读
- python - 连接不同位置的numpy列
- rotation - 有或没有最小旋转弧的四元数乘积
- cypress - 我可以在 Cypress.io 上创建自定义错误吗?
- xml - Solr 数据导入 - 非法属性“xpath-default-namespace”
- javascript - 多个 div 的 parentNode 的 EventListener
- r - 如何使用R中的特定列制作相关矩阵
- java - WADL2JAVA Mavaen 插件不生成类
- firebase - 任何人都知道为什么 Firebase 存储上传视频会如此缓慢
- asp.net - asp:超链接不可点击
- spring-boot - 当服务器需要区分大小写的标头时,Spring Cloud 网关无法建立 websocket 连接