1

我有 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 子句返回数据。

4

2 回答 2

2

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

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

于 2010-02-22T16:49:41.000 回答
1

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

// 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;
于 2014-09-30T17:05:02.297 回答