Php 重定向不';使用AjaxContext后无法工作
在controllers init()方法中,我调用AjaxContext帮助器,并为该控制器中的某些方法/操作设置它。像这样:Php 重定向不';使用AjaxContext后无法工作,php,ajax,zend-framework,header,Php,Ajax,Zend Framework,Header,在controllers init()方法中,我调用AjaxContext帮助器,并为该控制器中的某些方法/操作设置它。像这样: public function init() { $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->addActionContext('setlabel', 'html'); $ajaxContext->initContext()
public function init()
{
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('setlabel', 'html');
$ajaxContext->initContext();
}
现在,当我想使用从ajax请求到非ajax方法的重定向时
$this->redirector->gotoSimple('manage', 'team', null, array('id' => $teamID));
我的问题是页面无法加载。我想这是因为AjaxContext弄乱了标题
在重定向之前,我尝试了clearHeaders和ClearContext,但没有任何效果
[edit]在相应的ajaxed方法(AjaxContent)中,我通常会用ajax响应myviewscript.ajax.phtml。但在某种情况下,我现在想重定向到另一个控制器中的正常非ajax操作。[/edit]
有什么想法吗?谢谢 好的。希望我能理解你的目标 首先,在
Zend\u Controller\u Action
的实例上没有直接的重定向器
方法
那么这个,
$this->redirector->gotoSimple('manage', 'team', null, array('id' => $teamID));
应该是这样的:
$this->_helper->redirector->gotoSimple('manage', 'team', null, array('id' => $teamID));
当然,除非您已将重定向器分配给控制器的属性。在这种情况下,你应该是对的,但我会仔细检查一下
此外,在XHR请求期间调用\u redirect
方法或Redirector action helper只会重定向XHR请求本身。您正在尝试重定向XHR请求吗?或者将用户的浏览器重定向到其他页面
编辑:
好的。因此,请您发表评论:
您的目标是在满足某些条件的情况下,将用户的浏览器会话重定向到与XHR请求不同的页面。重定向程序操作帮助程序在此处不起作用。XHR/Ajax请求没有什么特别之处。。。如果它看到一个301/302重定向,它会自动跟随它,就像一个普通的浏览器请求一样。它不做任何有趣的事情
所以,为了解决你的问题,你必须做一些习惯性的事情。以下是一些可行的方法:
window.location=无论什么
都可以正常工作$url = $this->view->url(array('controller' => 'team',
'action' => 'manage',
'id' => $teamID), null, null);
$this->view->response = '<script type="text/javascript">
window.location = "'.$url.'"
</script>';
$url=$this->view->url(数组('controller'=>'team'),
“操作”=>“管理”,
'id'=>$teamID),null,null);
$this->view->response=
window.location=“”.$url.”
';
你到底想做什么?您想重定向AJAX请求、在AJAX请求后重定向用户,还是仅仅在使用AjaxContext助手的控制器中的正常请求上重定向用户?如果是第一个,请检查相关问题。在提供帮助之前,我们确实需要更多的上下文(哈!)。我有一个私有的$redirector,在init()中我分配$this->\u helper->getHelper('redirector');所以这应该没问题。但是如果你说我只是重定向XHR请求,那一定是问题所在。事实上,我只想重定向用户。还要注意,您要重定向到的URL可能是该响应的一部分。谢谢,我现在了解了一些关于XHR的知识!根据你的方法,我找到了一个更容易的解决办法。见我贴出的答案。