所以情况如下: 我有我的default.ctp和我的ajax.ctp,其中我的ajax.ctp只是空白的$ content_for_layout;
当我正在进行自动完成ajax调用时,我必须将布局更改为'ajax'。 所以我在我的控制器中有这个功能
function beforeFilter() {
if($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
}
}
然而,当我查看自动填充的结果时,我会在我的选项中得到这个:
基本上是我的默认布局。 所以我的猜测是布局没有改变
其他人遇到过这个问题?我忘记在控制器中添加一些东西了吗?所有助手和组件都已到位。
答案 0 :(得分:0)
你的剧本中没有那么多可能出错的地方。在过滤器良好之前,设置视图模板也是如此。我能想到的唯一一件事就是你的ajax请求不知所措。
RequestHandler :: isAjax()的代码非常简单:
function isAjax() {
return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest";
}
所以我建议记录你的变量,看看它是否被识别为ajax。我也听说有时缓存会搞砸了。试试$ this-> disableCache();在检查它是否是ajax之前。
调试......不是很有趣