2012-09-12 131 views
2

我想重定向到使用CakePHP重定向方法的新页面,但由于某种原因重定向不起作用。我用来重定向的代码是CakePHP重定向方法不重定向

public function update_sticky_postition_in_db() 
{ 
    $this->autoRender = false; 

    ... // Save info to database 

    $this->redirect(array('action' => 'tool')); 
} 

其中,tool是我要重定向到的视图的名称。为了加快找到问题的过程,我检查了几件事情,并认为我找到了问题的原因。基本上我试图重定向到目前处于活动状态的视图,我认为这是它不重定向的一部分原因。我已经读过,它可能与缓存页面有关,但我不知道如何解决这个问题。

此外,当使用萤火虫我可以看到重定向发送GET请求,但在此之后什么都没有发生。我是否必须对GET请求做些什么或者Cake是否为我处理。我也检查了GET的URL,它是正确的。

它位于控制器内,使用正确的名称,因为我可以查看原始工具页面。

另外,update_sticky_postition_in_db()方法没有视图(因此为什么自动渲染设置为false),其目的是从ajax调用更新数据库中的行。

+0

只有在这个页面或所有页面中有这个问题吗? –

+0

看来它不会重定向到任何页面。另外我应该添加重定向不在控制器的工具方法中。 – Lsakurifaisu

+1

你可以显示上下文吗?$ this-> redirect ...(我认为它在控制器中是)? –

回答

4

从你的帖子看来,你使用ajax调用来触发update_sticky_postition_in_db(),所以重定向不起作用。

您可以在ajax success方法中使用JavaScript进行重定向。

为了做到这一点,你可以发送一些json_encode()消息从你上面的方法,并检查内部的状态ajax success方法你可以使用window.location重定向。

+0

是的,解决了这个问题。谢谢我完全卡住了。 – Lsakurifaisu

+0

@Lakakurifaisu不客气。 – thecodeparadox

+0

也会碰巧知道使用我目前使用的方法调试数据的好方法。我曾尝试使用调试和设置Flash方法(我试图刷新页面的一部分原因),但这些都没有工作。有任何想法吗? – Lsakurifaisu