【问题标题】:Symfony: How to redirect to a new page in an AJAX call?Symfony:如何在 AJAX 调用中重定向到新页面?
【发布时间】:2011-01-19 17:10:31
【问题描述】:

我让 jquery 发送一个 AJAX 请求,该请求执行一些检查,然后应该重定向到另一个页面或返回数据。一切正常,除了我无法在我的操作文件中强制重定向。我试过了:

$this->redirect('@new_page'); // DOESN'T WORK

还有……

$this->context->getController()->redirect('@new_page'); // DOESN'T WORK

我认为有一种方法可以将重定向 URL 返回到 Jquery 并从那里重定向,但我更愿意在我的操作中处理重定向。

这可能吗?

谢谢

更新:

上述最终工作解决方案是将 TRUE/FALSE 返回到 Ajax 请求,并将以下内容添加到我的 Jquery 函数中:

if(data == true) window.location.href = "<?php echo url_for('@new_page') ?>";
else // do other stuff

新页面 URL 不需要是动态的,并且可以在第一个页面加载时插入。在这种情况下,TRUE/FALSE 足以满足 else 子句返回的数据。

【问题讨论】:

    标签: jquery ajax redirect symfony1 forward


    【解决方案1】:

    请记住,通过 AJAX 操作,结果(通常)返回到回调处理程序或页面中的 DIV 元素。因此,您尝试使用的重定向仅指此 AJAX 操作的响应,而不是整个 HTTP 页面请求。重定向可能在 symfony 中工作正常,只是它返回的响应被馈送到您的 DIV 或回调处理程序,并且它不知道如何处理 HTML。您确实需要从 AJAX 回调处理程序中触发重定向或刷新。

    您可能需要考虑避开完全重定向,转而使用error 回调并显示另一个带有错误消息内容的DIV,但如果您愿意,这个error 回调也可以用于重定向。

    【讨论】:

    • 非常有道理,谢谢。将查看 Jquery/回调重定向。
    【解决方案2】:

    我已经通过下面的代码处理了这个,同时保留在控制器中

    // some other code goes here
    // run this in special condition like if
    $url = $this->generateUrl('fos_user_security_login');
    echo '<script>window.location = "'.$url.'";</script>';die;
    

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多