微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-使用AjaxContext后重定向不起作用

在我的控制器init()方法中,我调用AjaxContext-Helper并将其设置为该控制器中的某些方法/动作.像这样:

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和clearContexts,但是没有任何效果.

在各自的ajax方法(AjaxContent)中,[edit]我通常以对myviewscript.ajax.phtml的ajax响应来响应.但是在某些情况下,我现在想重定向到另一个控制器中的正常非ajax操作.[/ edit]

有任何想法吗?谢谢!

解决方法:

好.希望我理解你的目标.

首先,在Zend_Controller_Action实例上没有直接的重定向方法.

所以这:

$this->redirector->gotoSimple('manage', 'team', null, array('id' => $teamID));

应该是这样的:

$this->_helper->redirector->gotoSimple('manage', 'team', null, array('id' => $teamID));

当然,除非您已将重定向器分配给控制器的属性.在这种情况下,您应该是对的,但我会仔细检查.

同样,在XHR请求期间调用_redirect方法或Redirector操作帮助程序将仅重定向XHR请求本身.您是否要重定向XHR请求?还是实际上将用户的浏览器重定向到其他页面

编辑:

好吧.所以,没有您的评论
您的目标是在满足某些条件的情况下,将用户的浏览器会话重定向到XHR请求的其他页面.重定向器动作帮助器在这里不再使用. XHR / Ajax请求没有什么特别的……如果它看到301/302重定向,它就会像常规浏览器请求一样随心所欲.它不会做任何有趣的事情.

因此,要解决您的问题,您将需要做一些自定义操作.这是可行的:

>在Ajax请求期间,如果满足用户重定向的条件,则将某种特殊响应发送回客户端;它可以是您想要的任何内容.特定的字符串,JSON响应…您可以轻松检查的任何内容.
>当您在客户端收到响应时,请检查它是否是您在步骤1中发送的特殊消息.
>如果是,则必须使用Javascript执行重定向. window.location =一切正常.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐