2011-12-15 98 views
0

所以这里是情况: 我有我的default.ctp和我的ajax.ctp其中我的ajax.ctp只是空的$ content_for_layout;

当我做一个自动完成ajax调用时,我必须明确地将布局更改为'ajax'。 所以我有这个功能在我的控制器

function beforeFilter() { 
     if($this->RequestHandler->isAjax()) { 
      $this->layout = 'ajax'; 
     } 
    } 

但是当我看到我的自动完成的,结果我在选项得到这样的:

  • DOCTYPE HTML PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
  • html xmlns =“http://www.w3.org/1999/xhtml” >

这基本上是我的默认layo UT。 所以我的猜测是布局没有改变

其他人遇到过这个问题吗?我忘了在我的控制器中添加什么东西?所有的帮手和组件都已到位。

+0

问题解决了,我movie_autocomplete.ctp的名字有资本,所以他正在寻找并不存在movie_auto_complete.ctp。 发现那个时我感到很傻... – Christophe 2011-12-15 21:36:00

回答

0

脚本中没有太多可能出错的地方。在过滤器良好并且设置视图模板之前也是如此。我唯一能想到的就是你的ajax请求不会被识别。

RequestHandler :: isAjax()的代码非常简单:

function isAjax() { 
    return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest"; 
} 

所以我建议你登录到瓦尔看看它认定为阿贾克斯。我还听说有时候缓存将这个问题搞砸了。试试$ this-> disableCache();在检查它是否是ajax之前。

调试......是不是很有趣

+0

关于缓存问题的任何来源? – Moxy 2014-01-20 16:50:30