如何在laravel中ajax成功后显示flash消息?

Posted

技术标签:

【中文标题】如何在laravel中ajax成功后显示flash消息?【英文标题】:How to show flash message after ajax success in laravel? 【发布时间】:2021-08-17 14:43:45 【问题描述】:

我想在重定向到通过 ajax 请求查看后显示一条 flash 消息。

这是我的控制器代码

    \Session::flash('success', __('Password change successfully. Please Login again')); 
     $data            = array();
     return response()->json([
          'success' => true,
          'data'    => $data,
        ]);

这是我的 ajax 请求

  $.ajax(
   url: my-url
   method: "POST",
   data: new FormData(this),
   contentType: false,
   cache: false,
   processData: false,
   dataType: "json",
   success: function(response) 
    if (response.success == true) 
      var url =" route('admin.dashboard') "; //the url I want to redirect to
            $(location).attr('href', url);
      
, //success end

);  

它重定向到我的刀片视图,我使用下面的代码来显示一个 Flash 消息

   @if (session()->has('success'))
       <div class="alert alert-success alert-solid alert-dismissible shadow-sm p-3 mb-5 rounded" 
          role="alert">
           session('success') 
       <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
        </button>
     </div>
  @endif

但它没有显示任何消息。

谁能告诉我如何显示一条消息?

【问题讨论】:

【参考方案1】:

\Session::flash 仅适用于下一个请求。这意味着您无法在页面刷新一次或重定向后获得它的值。您可能面临的情况是您正在放置 Flash 数据,然后通过 ajax 调用将其取回,然后再次将其重定向到另一个页面/URL。试试reflash() 方法。它将帮助您为接下来的几个请求保留数据。

\Session::flash('success', __('Password change successfully. Please Login again'));
\Session::reflash(); // add this line

欲了解更多信息:https://laravel.com/docs/6.x/session#flash-data

【讨论】:

以上是关于如何在laravel中ajax成功后显示flash消息?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 & AJAX - 重定向后显示成功消息

使用ajax提交表单后显示flash消息

Laravel 5.4 以不同方式显示 flash 错误和成功消息

ajax调用后Rails不显示flash消息

Laravel 5.4,AJAX 应该不会出错

ajax成功后用数据调用另一个控制器后的Laravel