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 =一切正常.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...