0

我正在使用 CakePHP。我在我的应用程序中需要的是自动建议。我使用以下代码来实现我的目标:

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

将我的请求发送到SongsController'sss函数...我的控制器函数是:

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 正在等待此时的视图。我不想要任何观点,因为我没有更新任何东西......

4

1 回答 1

0

您需要检查将数据序列化为 JSON:http ://book.cakephp.org/2.0/en/views/json-and-xml-views.html#using-data-views-with-the-serialize -键。通过在视图中设置一个_serialize变量,您可以告诉 Cake 在收到数据视图请求时哪些数据是重要的。

您还需要在 jQuery 调用中的 URI 末尾添加Router::parseExtensions('json');和 a .json,以便 Cake 知道响应 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);
}
于 2015-02-15T00:26:23.610 回答