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

Posted

技术标签:

【中文标题】使用ajax重定向到Laravel中的特定页面【英文标题】:Redirect to a specific page in Laravel using ajax 【发布时间】: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

【问题讨论】:

【参考方案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 看看***.com/questions/282429/…,您的消息将被设置,然后在同一个请求中使用。你需要修改你的整体逻辑 @AkashKumarVerma 是的。提示用户必须更新个人资料。 @EemJee 请检查并验证如果您遇到任何问题请告诉我 谢谢@AkashKumarVerma 它有效。但是请检查我在向用户发送消息时的更新,单击关闭按钮时我的 url 是 /mypage 。我现在的问题是模式没有关闭。

以上是关于使用ajax重定向到Laravel中的特定页面的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Ajax登录,成功后重定向到上一个url

重定向回 Laravel 中的相同位置

如果用户未使用中间件进行身份验证,Laravel 5.4 将重定向到特定页面

Laravel 8重定向到特定页面问题

如何在laravel中登录后重定向特定页面

Laravel 5.5登录后重定向到特定路由