2012-04-22 124 views
0

我正在使用CakePHP。我的申請中需要的是自我暗示。我用下面的代碼來實現我的目標:CakePHP和jQuery自動完成

jQuery("#name").autocomplete('<?php echo HTTP_PATH.'songs/sss'; ?>', { 
    multiple: true, 
    mustMatch: true,   
    matchContains: true, 
    autoFill: false, 
}); 

送我的請求SongsControllersss功能...我的控制器功能是:

public function sss(){ 
    $this->layout = ''; 
    $condition = ''; 
    $condition = array('Poet.status'=>'3'); 
    $poet_name = $this->Poet->find('list', array('conditions' => $condition)); 
    return $poet_name; 
} 

第一個問題是,我回到我的結果陣列。我將如何在建議清單中再次分析我的結果。

第二件事是,當我試圖檢查使用Firebug面板的響應,我注意到CakePHP期待在這一點上的觀點。我不想要任何形式的視圖,因爲我沒有更新任何東西...

+0

你真的應該看看['json_encode'(http://ca3.php.net/json_encode) 。你使用的是什麼版本的CakePHP? CakePHP 2有一個['JsonView'](http://book.cakephp.org/2.0/en/views/json-and-xml-views.html)類,您也可以使用它。 – 2012-04-22 18:48:03

+0

我是新的cakephp ...你可以幫我用這個Jsonview。在檢查響應時,PHP正在期待查看,但我沒有呈現任何視圖。請幫助... – 2012-04-22 18:59:20

+0

您是否使用CakePHP 2.1?因爲該視圖在早期版本中不可用。該文檔很好地解釋了你所要做的一切。你應該遵循指示。 – 2012-04-22 19:00:09

回答

0

你會想檢查出序列化你的數據爲JSON:http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#using-data-views-with-the-serialize-key。通過在視圖中設置一個_serialize變量,您可以告訴Cake在獲取數據視圖請求時哪些數據很重要。

您還需要添加Router::parseExtensions('json');.json你的URI的jQuery的通話結束時,使蛋糕知道用一個JSON數據視圖響應,並在您設置像我上面提到的_serialize鍵使用數據。有文件擴展名在這裏更多的信息:http://book.cakephp.org/2.0/en/development/routing.html#file-extensions

這是我會怎麼寫的方法:

public function sss(){ 
    $this->layout = ''; 
    $condition = array('Poet.status'=>'3'); 
    $poets = $this->Poet->find('list', array('conditions' => $condition)); 
    $this->set(compact('poets')); 
    $this->set('_serialize', $poets); 
}