2010-09-16 48 views
0

我设置了jQuery用户界面自动完成对CakePHP的网站,觉得我失去了一些东西真的很明显,但它几乎工作...jQuery用户界面自动完成+ CakePHP的

所以简单的jQuery代码是:

$(function() { 
    $("#SearchQuery").autocomplete({ 
     source: "<?= $session->base ?>/search/complete", 
     minLength: 2 
    }); 
}); 

这连接到我的搜索控制器,搜索控制器从数据库中返回项目。我能得到的结果回来,如果我不尝试实际看看“术语”(什么已经输入所以,在我的控制器工作的:

function complete(){ 
    $entries = $this->Entry->find('list'); 
    $this->set('entries', $entries); 
} 

它返回的JSON,并落下从输入像它应该,但它从来没有缩小基于什么已经输入的结果我想,这应该缩小的结果:。

function complete($query = null){ 
    $entries = $this->Entry->find('list', 
     array('conditions' => array('title LIKE' => '%'.$query.'%'))); 
    $this->set('entries', $entries); 
} 

但有了这个代码,没有什么是永远回我在做什么错?

PS人谁发现这个问题,并无法将结果返回到自动完成功能,请确保您返回格式正确的JSON结果:http://www.pagebakers.nl/2007/06/05/using-json-in-cakephp-12/

回答

2

答案很简单,正如所料......“term”作为$_GET['term'],所以它不能从控制器函数的变量中获得。 (为什么我认为这将是一个URL段我不知道要传递......)

这工作:

function complete(){ 
    $query = $_GET['term']; 

    $entries = $this->Entry->find('list', 
     array('conditions' => array('title LIKE' => '%'.$query.'%'))); 
    $this->set('entries', $entries); 
} 
+0

它的面世。使用:$ this-> params ['url'] ['term']; :-) – 2010-09-17 06:55:45

+0

是的。这是我不确定使用'$ this-> params ['url']'和'$ _GET'的好处之一。不知何故,它更安全吗? – bjudson 2010-09-17 13:31:45

+0

如果这只是查询下拉菜单,我不认为安全问题太多。但如果它涉及到你,你可以在采取行动之前用标准php清理这个术语。 – Leo 2010-09-18 09:53:44

相关问题