【问题标题】:Laravel redirection through ajax request from blade to controllerLaravel 通过 ajax 请求从刀片重定向到控制器
【发布时间】:2021-12-22 22:46:51
【问题描述】:

我有一个刀片文件,它允许用户通过向控制器发送 ajax 请求来删除某些项目。

如果控制器端的所有验证都通过并且项目被成功删除,我希望用户被重定向回同一页面,页面正在刷新,但是页面没有被刷新,似乎什么都没有正在发生

刀片文件

    $.ajax({
        type: "post",
        url: "{{env('APP_URL')}}/ticket-dashboard/updateTicket",
        dataType:'json',
        data: {"option":option, "status":status,"ticket_id":manual_ticket_id,'completed_id':'{{$user}}',"latest_ticket_log_id":latest_ticket_log_id,_token: '{{csrf_token()}}'},
        success: function (data) {
            console.log('-------');
            console.log(data);
            if(data['updated']){
                alert("The selected task was updated and page has to be refreshed before attempting to apply action to ticket again");
            }
            else {
                //Page should have reloaded on controller side
            }
        }
    })

控制器文件

if($validationPasses){
    return redirect()->route('ticket_dashboard');
}

【问题讨论】:

  • 它应该从javascript重定向,而不是控制器。
  • 那么laravel提供的redirect功能是做什么的呢?返回重定向()->路线('ticket_dashboard'); @WahyuKristianto
  • 使用ajax时不能从控制器重定向

标签: php ajax laravel laravel-blade


【解决方案1】:
if($validationPasses){
    return response->json(["status" => "redirect", "url" => "ticket_dashboard"]);
}

///////javascript ///////////

$.ajax({
        type: "post",
        url: "{{env('APP_URL')}}/ticket-dashboard/updateTicket",
        dataType:'json',
        data: {"option":option, "status":status,"ticket_id":manual_ticket_id,'completed_id':'{{$user}}',"latest_ticket_log_id":latest_ticket_log_id,_token: '{{csrf_token()}}'},
        success: function (data) {
            console.log('-------');
            console.log(data);
            if(data['updated']){
                alert("The selected task was updated and page has to be refreshed before attempting to apply action to ticket again");
            }
            else {
                if(data.status === "redirect"){
                   window.location.href = data.url;
                }
            }
        }
    })

您需要对 ajax 进行 tp 响应,然后才能重定向。

【讨论】:

  • 我无法从控制器重定向的原因是什么?如您的示例中所示,URL 的 json 响应不是链接,因此窗口位置 href 代码不起作用,但我明白了您示例的要点,谢谢!
  • 抱歉 url 应该是那个 "url" => route("your route here")。但是为什么它不起作用,因为您的 ajax 仍在工作并等待响应。
  • 这与那个人最初对我的主要帖子的评论相似。感谢您花时间制定快速解决方案,我相信它应该可以工作!将其标记为未来用户的答案
猜你喜欢
  • 2019-12-19
  • 2017-02-26
  • 2016-05-09
  • 2018-05-19
  • 2019-09-23
  • 2018-02-28
  • 2021-10-28
  • 2019-04-13
  • 2017-12-16
相关资源
最近更新 更多