【发布时间】:2016-10-30 08:06:35
【问题描述】:
我有一个带有以下 jQuery sn-p 的页面:
$( "#fuser" ).autocomplete({
source: "/users/jsonusers",
select: function(event, ui) {
$("#find").val(ui.item.value);
return false;
},
focus: function(event, ui) {
$("#find").val(ui.item.label);
return false;
}
“源网址”处的代码如下所示:
$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
当我尝试使用自动完成小部件时,它完全失败了。
查看我的控制台,我想我知道为什么。看起来 Cake 将我的“键”(“名称”和“值”)放在引号中,所以 json 看起来像这样:
[
{
"value": "46",
"label": "Test User"
}
]
而不是这样:
[
{
value:"46",
label:"Test User"
}
]
所以我想,“只需自己手动构建该死的对象。轻松遍历数组并根据需要格式化 json,不是吗?”
但是不,我错了。 CakePHP 根本不允许我规定如何通过 ajax 传输数据。我坚持使用 Cake 的格式。如果我尝试制作自己的 json 对象,它会因编码而受到破坏,并且无论如何仍会被埋葬为子对象。
我做错了什么?或者这只是 Cake 的一个错误?如果是这样,是否有一些解决方法?我可以让 jQuery 自动完成功能来处理 Cake 返回的 json 对象吗?我需要在js中进一步解析吗?遗憾的是,如果是这样,那超出了我使用 jQuery 的知识范围。
非常感谢任何帮助。
【问题讨论】:
标签: jquery autocomplete cakephp-3.0