如何在客户端调用flash?

时间:2017-01-17 12:03:00

标签: javascript node.js connect-flash

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或从客户端使用其他库复制相同的行为有关。

问题:

我展示的代码当然不适用于客户端,我可以做些什么来在客户端复制该行为?

2 个答案:

答案 0 :(得分:1)

  

flash是会话的一个特殊区域,用于存储消息。消息被写入闪存并在显示给用户后被清除。闪存通常与重定向结合使用,确保消息可用于要呈现的下一页。

所以你需要代码:

  1. 将某些数据存储在客户端可以在页面之间访问的位置
  2. 读取该数据
  3. 阅读后删除
  4. 首先选择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')