CODE:
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或从客户端使用其他库复制相同的行为有关。
问题:
我展示的代码当然不适用于客户端,我可以做些什么来在客户端复制该行为?
答案 0 :(得分:1)
flash是会话的一个特殊区域,用于存储消息。消息被写入闪存并在显示给用户后被清除。闪存通常与重定向结合使用,确保消息可用于要呈现的下一页。
所以你需要代码:
首先选择somewhere选项1(例如localStorage或cookie)。其余的应该是微不足道的 - 原始模块大约是80 lines of code, including about 50% comments - 要实现(但具体到你做出的选择)。
答案 1 :(得分:1)
以下是我使用的解决方案:
x1 == x2
并将<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>
替换为:
req.flash('success_msg_local', 'You have logged in')