の下で失敗します。jqueryのオートコンプリートは、私は次のjQueryスニペットでページを持っているCakePHP3.x
$("#fuser").autocomplete({
source: "https://stackoverflow.com/users/jsonusers",
select: function(event, ui) {
$("#find").val(ui.item.value);
return false;
},
focus: function(event, ui) {
$("#find").val(ui.item.label);
return false;
}
「ソースURL」のコードは次のようになります。
$connection = ConnectionManager::get('default');
$results = $connection->execute($query, ['str' => $find])->fetchAll('assoc');
$users = [];
foreach($results as $user){
$users[] = ['value'=>$user['user_id'], 'label'=>$user['full_name']];
}
$this->set(compact('users'));
// $this->set('_serialize', 'users'); // this is the correction that works
$this->set('_serialize', ['users']); // this is Bake's default
ときIオートコンプリートウィジェットを使用しようとすると、完全に失敗します。
私のコンソールを見ると、私は理由を知っていると思います。ケーキは、引用符の中に(「名前」と「値」)私の「キー」を入れているように見えますので、JSONは次のようになります。
代わりに、このようなの[
{
"value": "46",
"label": "Test User"
}
]
:
[
{
value:"46",
label:"Test User"
}
]
だから私は」と思ったのですが、「手作業で自分で手作りのオブジェクトを作成するだけです。簡単に配列を整理し、jsonを必要に応じてフォーマットするのは簡単ですか?
いいえ、私は間違っています。 CakePHPでは、ajax経由でデータがどのように送信されるかを私が決めることはできません。私はケーキの書式設定に立ち往生しています。私自身のjsonオブジェクトを作成しようとすると、エンコーディングで乱雑になり、STILLはサブオブジェクトとして埋もれてしまいます。
私は間違っていますか?それともケーキのバグですか?もしそうなら、いくつかの回避策がありますか? jQueryオートコンプリートをCakeが返すjsonオブジェクトと連携させることはできますか?私はjsでさらに解析する必要がありますか?悲しいことに、もしそうなら、それはjQueryの使用に関する私の知識を超えています。
ご迷惑をおかけして申し訳ありません。
これは残念なことに誤植でした。私はそれをキャッチして助けてくれてありがとうと思いますが、それは私の問題の原因ではありません。コードを修正して投稿します。生成されたJSONは、手動で作成してJS varとしてページに埋め込んでもjQueryで解析されません(サーバー上で動的なフルテキストクエリが必要なのでできません。データの多く) – calzone
あなたのソースをこのようにするなら/users/jsonusers.json ?? –
「.json」を含むURLであなたのソースをヒットした場合、探しているのと同じ配列が得られます。 –