如何在客户端调用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结合使用,确保消息可用于要呈现的下一页。

所以你需要的代码是:

  1. 在客户端可以访问的页面之间存储一些数据
  2. 读取这些数据
  3. 读取后删除它

首先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');