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