在Laravel中重新声明AJAX调用的会话变量(4.2)

时间:2017-05-09 04:48:09

标签: php ajax laravel session laravel-4.2

我们使用Varnish(可能会切换到Cloudflare)来缓存页面的HTML。有时,我们希望向用户显示一条消息,该消息在会话中闪现:Session::flash('user_message', 'You cannot perform that action');

下一页加载,然后有一个AJAX(到/ajax/message)调用,检查服务器是否有闪存消息。显然页面加载会吸收闪存消息,所以我们在BaseController中所做的就是:

if (Session::has('user_message') && !str_contains(Request::getPathInfo(), '/ajax/message')) {
   Session::flash('user_message');
}

我们的AJAX调用只是声明:

$response = [];
if (Session::has('user_message')) {
  $response['user_message'] = Session::get('user_message');
}
return json_encode($response);

但是,下次加载页面时,它会再次显示相同的消息!我尝试了很多东西(例如Session :: forget(' user_message')),但无济于事。我的智慧结束了解决应该是一项非常微不足道的任务。有谁知道更好的方法来做这件事或出了什么问题?

谢谢!

0 个答案:

没有答案