如何在客户端调用Flash?
码:
login.ejs
<script> req.flash('success_msg', 'You have logged in'); </script>
header.ejs
<div class = "alertMessage"> <% if (success_msg != false){ %> <span class="alert alert-success containerMargins"> <%= success_msg %> </span> <% } %> <% if (error_msg != false){ %> <span class="alert alert-danger containerMargins"> <%= error_msg %> </span> <% } %> </div>
情况:
这与在服务器端使用闪光灯并在客户端显示消息无关:它已经完全适合我了。
这与从客户端调用Flash或从客户端与其他库中复制相同的行为有关。
题:
我所展示的代码当然不适用于客户端,我可以怎样在客户端复制这种行为呢?
闪存是用于存储消息的会话的特殊区域。 消息被写入闪存并在显示给用户后清除。 Flash通常与redirect结合使用,确保消息可用于要呈现的下一页。
所以你需要的代码是:
- 在客户端可以访问的页面之间存储一些数据
- 读取这些数据
- 读取后删除它
首先select选项1(如localStorage或cookie)。 其余的应该是微不足道的 – 原始模块是大约80行代码,包括大约50%的评论 – 执行(但具体到你做出的select)。
这是我使用的解决scheme:
<div class = "alertMessage"> <span class="alert alert-success containerMargins" id="successDiv"></span> <span class="alert alert-danger containerMargins" id="errorDiv"></span> </div> <script> if (localStorage.getItem("success_msg_local") != null) { document.getElementById("successDiv").innerText = localStorage.getItem("success_msg_local"); document.getElementById("successDiv").style.display = "inline-block"; window.localStorage.clear(); } else if (localStorage.getItem("error_msg_local") != null) { document.getElementById("errorDiv").innerText = localStorage.getItem("error_msg_local"); document.getElementById("errorDiv").style.display = "inline-block"; window.localStorage.clear(); } </script>
并通过以下方式replacereq.flash('success_msg_local', 'You have logged in')
:
localStorage.setItem('success_msg_local', 'You have logged in');