当AJAX调用时,Laravel重定向到从控制器路由

时间:2014-01-17 08:13:47

标签: php laravel

鉴于调用ajax

FriendsController@destroy这一块
$.ajax({
    url:     '/dashboard/friends/' + id,
    type:    'DELETE',
    data:    { src: 'show' },
    success: function(response) {
    }
});

删除程序完成后,return Redirect::route('dashboard.friends.index')内的FriendsController怎么办?我想这是试图将响应返回给AJAX,后者不知道如何反应。

我可以window.location.href = '/dashboard/friends'但是我希望将一条成功消息发送到我无法用AJAX做的视图。

5 个答案:

答案 0 :(得分:3)

我找到了最简单的方法。 在你的ajax成功中再次使用相同的url。假设朋友是你的路线名称,那么

$.ajax({
    url:     '/dashboard/friends/' + id,
    type:    'DELETE',
    data:    { src: 'show' },
    success: function(response) {
       window.location.href = "friends";
    }
});

这样你可以根据需要添加重定向或flash会话消息。

答案 1 :(得分:1)

Here is how I solved this issue我自己。对于执行AJAX删除模型等功能,它会提示确认模式,执行删除,刷新消息并重定向到提供的路径。

设置完成后,可以通过将正确的data属性传递到原始删除按钮或链接来动态完成。

答案 2 :(得分:0)

我知道这可能是个老问题,但是如果您要返回动态路线

return route('post.view', ['id' => $result]);

在前端,您将

  success: function(response){
          window.location.replace(response);
          }

答案 3 :(得分:0)

我遇到了同样的问题,这对我来说是个窍门。

在您的控制器中,您可以使用以下方法闪烁消息:

\Session::flash('success', __('locale.message'));

然后在您的ajax响应处理程序中,您重定向到所需的任何位置

location.replace('/home');

不要忘记在您的视图中添加登录名以显示消息,即:

 @if (session('success'))
    <div class="alert alert-success alert-dismissible fade show" role="alert">
        {{ session('success') }}
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
 @endif

答案 4 :(得分:-1)

if(data.success){

    var loc = window.location;
    window.location = loc.protocol+"//"+loc.hostname+"/admin/dashboard";
}