Cakephp 2.4.2 - 默认布局加载而不是ajax布局

时间:2013-10-24 06:05:02

标签: ajax cakephp layout default

我尝试加载ajax布局,但每次都是加载的默认布局。

public function getByZone() {
        $this->layout = 'ajax';    
        ...
    }

所以我的组合框包含我的所有 default.ctp 而不是我的“ajax答案”

我尝试了许多解决方案,在网络上找到但没有任何效果。

使用$this->layout = false, $this->render('my_view_name', false), $this->autoRender = false,

禁用布局

看看我的 AppController 中是否有 beforeRender ,...

如果您有任何解决方案,非常感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

添加$this->autoRender = false;

答案 1 :(得分:0)

首先尝试使用浏览器中的常规网址。这将告诉你它是你的ajax调用还是代码中的某些内容。通常我会尝试简化事情,因此我可以减少导致问题的事情。

答案 2 :(得分:0)

我有Cakephp 2.0并升级到2.4,当我遇到这个问题时,我很确定我遇到了同样的问题。我最后改变了

$this->render('ajax', 'success');

$this->render('/Layouts/ajax', 'ajax');

但这不是全部!此外,也许只是因为我正在做一些克拉的方式,我改变了

$this->request->params['url']

$this->request->query

即。此网址http://myurl.com/controller/action?bozopants=1中的我的http参数bozopants现在在控制器中作为$ this-> request-> query ['bozopants']

当然,这发生在具有相当严格的Auth限制的控制器中。

答案 3 :(得分:0)

可能页面上有重定向,确保您可以访问“getByZone”功能,或者是否需要登录APP

答案 4 :(得分:0)

在CakePHP 2.5.4中,我只使用以下行来渲染JSON输出:

   $this->set("data", $myData);
// $this->render(string $view, string $layout);
   $this->render(false, "ajax"); // Not using a view, only using a layout "ajax".

在“ajax”布局中,变量$ data将以viewVariable的形式提供。