【问题标题】:Close FancyBox with Redirect::back() Laravel使用 Redirect::back() 关闭 FancyBox Laravel
【发布时间】:2015-01-24 00:11:47
【问题描述】:

我正在使用 Laravel 创建一个项目

在我看来,我正在使用 Fancybox-2 来显示一个表单。提交表单后,我希望 Fancybox 关闭,然后将用户重定向到另一个页面。

在我的控制器中,在处理表单的方法结束时,我有

// some code

return Redirect::route('Page')

当我从视图提交表单时,一切正常。数据库已填满,我被重定向到“页面”。但是我在 Fancybox 中重定向。如何关闭花哨的框,然后重定向到控制器中的“页面”?这甚至可能吗?

【问题讨论】:

    标签: php jquery laravel fancybox-2


    【解决方案1】:

    您必须使用 javascript 处理重定向。我建议你从控制器返回一个 JSON 对象,然后在你的回调函数中读出它:

    if(Request::ajax()){
        return Response::json(array('redirect' => route('Page')));
    }
    return Redirect::route('Page')
    

    Javascript:

    function(response){
       if(response.redirect){
           window.location = response.redirect;
       }
    }
    

    【讨论】:

    • 嗯,但现在fancybox 无法打开。 Fancybox 的内容加载到它自己的页面中。
    • 我希望您没有在页面中插入 javascript 代码。它应该是如何处理来自控制器的回调的示例。如果您需要进一步的帮助,请使用您拥有的 javascript 代码更新您的问题。
    【解决方案2】:

    我不知道 Laravel,但为了关闭 fancybox(我假设它是 iframe 类型),您需要从打开的页面调用 parent.jQuery.fancybox.close() 方法。

    然后,在您的 fancybox 自定义初始化脚本(您在问题中错过的那个)中,添加 afterClose 回调以将页面重定向到您想要的任何位置:

    $(".fancybox").fancybox({
        // other API options
        afterClose : function() {
            window.location.href = "http://example.com/page.html";
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 2014-11-14
      • 2015-06-04
      相关资源
      最近更新 更多