Перенаправить на определенную страницу в Laravel, используя ajax - PullRequest
0 голосов
/ 13 марта 2019

Я создал функцию 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 ]

2 голосов
/ 13 марта 2019

вы не можете перенаправить через контроллер, если вы используете 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";
    }
  },

});

});

для флеш-сообщения, используйте сеанс

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';
    }

} 

Теперь в блейд-файле, где вы хотите показать флэш, поместите это

@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 голос
/ 13 марта 2019
$(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.
...