2010-09-16 49 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

相關問題