我尝试加载ajax
布局,但每次都是加载的默认布局。
public function getByZone() {
$this->layout = 'ajax';
...
}
所以我的组合框包含我的所有 default.ctp 而不是我的“ajax答案”
我尝试了许多解决方案,在网络上找到但没有任何效果。
使用$this->layout = false, $this->render('my_view_name', false), $this->autoRender = false,
看看我的 AppController 中是否有 beforeRender ,...
如果您有任何解决方案,非常感谢您的帮助。
答案 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的形式提供。