Symfony:如何在AJAX调用中重定向到新页面?

时间:2010-02-22 16:20:38

标签: jquery ajax redirect symfony1 forward

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

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

和...

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

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

这可能吗?

由于

更新

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

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

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

2 个答案:

答案 0 :(得分:2)

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

您可能需要考虑避免使用完整重定向以支持使用error回调并显示另一个包含错误消息内容的DIV,但此error回调可用于重定向如果你愿意,也可以。

答案 1 :(得分: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;