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;
}

最初の問題は、結果を配列で返すことです。提案リストで結果を再度分離するにはどうすればよいですか。

2 つ目は、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 に伝えます。

Router::parseExtensions('json');また、jQuery 呼び出しの URI の末尾にa と aを追加して、JSON データ ビューで応答し、上記のように設定.jsonしたキーでデータを使用することを Cake が認識できるようにする必要もあります。_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 に答える