如果在客户端上执行重写,我如何在页面上显示flash?

时间:2016-11-28 14:24:13

标签: elixir phoenix-framework

我在第1页发送ajax请求,当我返回响应时,我通过第2页的javascript在客户端上进行重定向。我想要的是在page2上显示一个闪光灯。只是" put_flash("某事")"不起作用,因为我只能通过一个动作来调用它 我从第1页返回ajax响应。我希望在第2页显示flash,我会通过javascript代码重定向。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

我对闪存如何工作的理解(主要来自Rails世界,但我没有理由认为凤凰处理它的方式不同)是:

  • 您的Flash消息包含在呈现的响应中。通常这个响应是重定向(302等),但它可以是任何状态代码和任何响应主体。
  • Flash只是一个基于cookie的指令,客户端应该与 next 请求一起发送,以在以下呈现的响应中显示某条消息(通常为HTML) )。
  • 这些机制应该完全相同,无论初始响应是302重定向,还是某些触发页面刷新的JS代码 - 或者即使响应只是包含&#的普通HTML页面34;刷新我!"无论下一个请求是如何触发的,下一个请求都应包含flash cookie,您可以设置响应以相应地显示flash消息。

注意:如果对服务器的后续请求是返回JSON的AJAX请求,我不确切知道在这种情况下Flash内容会发生什么。我的猜测是,在构建JSON响应时,您可以检查闪存并包含一条消息(如果存在),就像构建HTML响应时一样。