【问题标题】:Redirecting with PHP after jQuery post在 jQuery 发布后使用 PHP 重定向
【发布时间】:2012-08-05 08:12:00
【问题描述】:

所以我最近了解到,如果您使用 jquery $.post 回发到 PHP 脚本,那么您不能在该脚本中执行 @header 重定向(即使您在其后立即使用 exit();)。

这是一个非常令人沮丧的消息,因为我有一个重要的重定向/闪存消息类,我在成功执行表单提交后经常使用它。

jQuery post 是“贪婪的”并且不会让 php 脚本中断它的事实是一个巨大的限制。

有没有人知道一种解决方案,可以让我通过 ajax 将表单数据发送回 PHP,然后从 PHP 中重定向?在 javascript 中复制重定向/闪存消息类对我来说并不是一个真正的选择。

有人知道解决这个问题的方法吗?

【问题讨论】:

    标签: php jquery redirect


    【解决方案1】:

    您的脚本重定向,并且您的 JavaScript (jQuery) 从我认为的重定向中获取结果,或者您的返回包含 302: 重定向标头。

    由于您的脚本使用自己的请求,您告诉它执行的重定向不会更新浏览器,并且该功能永远不会存在。您必须在客户端代码中响应来自服务器的请求标头,以响应您想做的任何事情。

    【讨论】:

      【解决方案2】:

      可以使用success函数重定向浏览器。

      $.post(url, data, function() {
           window.location = newUrl;
      });
      

      http://api.jquery.com/jQuery.post/

      【讨论】:

      • 不幸的是,这正是我不想做的。我使用 Smarty 进行模板化,并且我有一条由 PHP 通过我的重定向类设置的全局 Flash 消息。如果我通过客户端代码进行重定向,那么我无法设置该 Flash 消息,从而破坏了我的预期用户体验。
      【解决方案3】:

      @bcmcfc 的解决方案是最好的,但是如果您在重定向之前需要更多的交互或计算,您可以查看 xajax。他们的文档很厚,但它是 UX 设计师梦寐以求的应用程序,填补了您所描述的空白。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多