使用Ajax重定向到Laravel中的特定页面

时间:2019-03-13 11:53:38

标签: ajax laravel routes laravel-blade

当用户单击按钮时,我已经创建了ajax函数,它将首先检查用户个人资料是否已确认帐户。如果不是,它将重定向回用户仪表板。但是,我现在的问题是页面没有显示或没有重定向回。结果只能在浏览器的“网络”标签中看到。

我的ajax

$(document).on("click", "#apply", function(){
$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

$.ajax({
  type: "get",
  url: '/checkstatus',
  success: function(store){
    if(store == 'confirmed'){
      $(".apply_modal").toggleClass("open").show();
      $("body").toggleClass("open");
    }
  },

});

});

和我的控制器:

public function checkStatus(Request $request)
{
    $verify = Auth::user()->verifyAccount();

    if($verify == false){
        if(session()->has('verify') && session()->get('verify') != '') {
           session()->forget('verify');
        } else {
            session()->flash('verify', 'At first, please update your profile!');
        }
    }else{
        return 'confirmed';
    }

}

如何正确地将用户重定向回其主页?现在的结果是这样的。

enter image description here

给用户的消息:

@if(session('verify'))
    <div class="complete_box">
        <p>{{ session('verify') }}</p>
        <a href="{{ url('/mypage') }}">Close</a>
    </div>
    @endif

2 个答案:

答案 0 :(得分:3)

如果使用的是Ajax,则无法通过控制器重定向。您需要使用javascript

window.location.href = "your url";
window.location.href = "{{url('/mypage')}}";
$(document).on("click", "#apply", function(){
$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

$.ajax({
  type: "get",
  url: '/checkstatus',
  success: function(store){
    if(store == 'confirmed'){
      $(".apply_modal").toggleClass("open").show();
      $("body").toggleClass("open");
      window.location.href = "your url";
    }
  },

});

});

用于Flash消息使用会话

public function checkStatus(Request $request)
{
    $verify = Auth::user()->verifyAccount();

    if($verify == false){
        \Session::put('message','At first, please update your profile!');
        return 'something you want';
    }else{
        return 'confirmed';
    }

} 

现在在您要显示Flash的刀片文件中,放这个

@if(Session::has('message'))
    <p class="alert alert-success">
       {!! Session::get('message') !!}
       <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
    </p>
@endif  

答案 1 :(得分:2)

$(document).on("click", "#apply", function(){
$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

$.ajax({
  type: "get",
  url: '/checkstatus',
  success: function(store){
    if(store == 'confirmed'){
      $(".apply_modal").toggleClass("open").show();
      $("body").toggleClass("open");
      window.location.href = "store.url";
    }
  },

});

});

store.url是响应中的URL。

在控制器中

Craete a url and send in response.