【问题标题】:Redirect to a specific page in Laravel using ajax使用ajax重定向到Laravel中的特定页面
【发布时间】:2019-08-04 02:16:37
【问题描述】:

当用户单击按钮时,我创建了 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';
    }

}

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

给用户的信息:

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

【问题讨论】:

    标签: ajax laravel routes laravel-blade


    【解决方案1】:
    $(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.
    

    【讨论】:

      【解决方案2】:

      如果你使用 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  
      

      【讨论】:

      • 谢谢。它可以工作,但是,消息['verify' =&gt; 'At first, please update your profile!'] 缺少它。我怎么能这样呢?
      • @EemJee 看看stackoverflow.com/questions/282429/…,您的消息将被设置,然后在同一个请求中使用。你需要修改你的整体逻辑
      • @AkashKumarVerma 是的。提示用户必须更新个人资料。
      • @EemJee 请检查并验证如果您遇到任何问题请告诉我
      • 谢谢@AkashKumarVerma 它有效。但是请检查我在向用户发送消息时的更新,单击关闭按钮时我的 url 是 /mypage 。我现在的问题是模式没有关闭。
      猜你喜欢
      • 2016-10-08
      • 2021-11-19
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2021-07-18
      • 1970-01-01
      相关资源
      最近更新 更多