jqueryUIオートコンプリートに変換する入力フィールドがあります。
$( "#autocomplete" ).autocomplete({
autoFocus: true,
source: mylist
});
mylist変数は、['Value1','Value2,'Blah']
元々スクリプトにハードコーディングした配列形式の文字列です。
ここで、mylist変数を、cakephpアプリの関数へのajax呼び出しの結果にする必要があります。関数は基本的に次のとおりです。すべてのデータをリストとして取得し、jsonがそれをエンコードします。
public function source() {
$this->layout = 'ajax';
$countries=$this->Country->find('list',array('fields'=>'Country.country'));
ChromePhp::log($countries);
echo json_encode($countries);
}
これは以下を出力します:
{"1":"Afghanistan","2":"Albania ","3":"Algeria ","5..
私の問題は、この関数の出力(最終的には「data」としてajax成功コールバックになります)を正しい形式に変換して、オートコンプリートのオプション配列に配置することです。
各値をコンソールログに記録することはできますが、困惑しています。基本的に正しい構文でストローをつかみます。
$.ajax({
type: "GET",
dataType: "json",
url: "/source/",
success: function(data){
/*
magic array string creation code would go here instead of my code below...
*/
$.each(data, function(i, item) {
console.log(item);
});
console.log('data',data);
}
})