Session :: flash无法在ajax laravel 5

时间:2015-11-30 12:18:39

标签: php ajax laravel-5

我的行为名为getuser,由ajax调用。

这是我的ajax

var $_token = $('#token').val();
var BASE = "{{ URL::to('/') }}";
$.ajax({
        url: BASE + "/admin/user/test",
        type: 'POST',
        data: {type:type, id:id},
        headers: { 'X-XSRF-TOKEN' : $_token },
        success: function(data){
            // Success...
            console.log(data);
            location.reload();
        }
    }); 

控制器操作,

public function getuser()
{
    Session::flash('message', 'This is a message!'); 
    Session::flash('alert-class', 'alert-danger');
    exit;
}

进入视图我有这样的代码,

@if(Session::has('message'))
    <p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
@endif

但不适合我。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以在ajax请求中刷新会话,这样就不会改变当前视图 如果你想在ajax请求之后更新当前页面,你将不得不使用javascript回调和javascript代码来执行此操作。

请阅读this post有关客户端和服务器端脚本之间的区别。

<强>更新
您永远不会收到ajax请求中设置的闪存值。闪烁的会话变量仅持续一个请求。因此,当操作返回并且输出发送回ajax请求时,闪烁的变量将被清除。

解决此问题的最佳方法是不使用ajax或使用实际的会话变量并手动清除它们。

答案 1 :(得分:0)

我发现这个问题处于完全相同的情况。不过我认为在执行ajax请求后我找到了显示flash masseges的解决方案。解决方案是使用

return back ()

return redirect()

我已尝试将变量写入会话然后将其删除 - 它可以工作,但它不是理想的解决方案。我尝试使用Session :: reflush - 它对我不起作用。

所以我的工作代码如下所示:

在我看来:

<li class="delete">
<a href="javascript:checkDelete({{$classified>id}});">@lang('Delete')</a>
</li>

<script>
function checkDelete(id) {
    if (confirm('Are you sure you want to delete this classified?')) {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            type: "DELETE",
            url: '/classified/' + id,
            success: function(result) {
                location.reload();
            }
        });
    }
}
</script>

然后在我的控制器中

flash(__('Your classified was removed'))->warning()->important();

if (request()->expectsJson()) {
return response(['status' => 'deleted']);
}

return back();

这将成功闪现您当前的观点。我在这里使用的包装是https://github.com/laracasts/flash 我希望它可以帮助别人!