【发布时间】:2015-05-16 04:02:06
【问题描述】:
我正在尝试使用 jquery ui 自动完成小部件搜索我的用户表。
我要搜索的用户表中的两个字段:
TABLE `users`
`user_name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`user_email` varchar(64) COLLATE utf8_unicode_ci NOT NULL
观点
<script>
$(function() {
$.ajax({
url: "/friend/showFriends", //the function in the controller
dataType: "json",
success: function(response){
var data = $(response).map(function(){
return {value: this.friend_usernames}; //I am pretty sure this is not correct?
}).get();
console.log(data);
$("#searchFriends").autocomplete({
source: data,
minLength: 1
});
});
});
});
</script>
<input type="search" id="searchFriends" placeholder="find friends"/>
控制器
/**
* Show friends
*/
public function showFriends()
{
$this->View->render('friend/index', array(
'privateFriends' => FriendModel::displayFriends(),
'searchFriends' => FriendModel::searchUsers()
));
}
模型
/**
* Search users table
*/
public static function searchUsers()
{
//if(isset($_GET['term'])) { /* Commented out for testing */
$database = DatabaseFactory::getFactory()->getConnection();
$query = $database->prepare("SELECT * FROM users WHERE (user_name LIKE :term or user_email LIKE :term) ORDER BY user_id LIMIT 5");
$query->execute(array(':term' => '%'.$_GET['term'].'%'));
$friends = $query->fetchAll();
$friend_usernames = array();
foreach($friends as $friend) {
$friend_usernames[] = $friend->user_name;
$friend_usernames[] = $friend->user_email;
}
/* output results as json encoded array. */
echo json_encode($friend_usernames);
//}
}
输出
注意:未定义索引:术语
["user1","user1@email.com","user2","user2@email.com"]
所以我可以在网站上输出 JSON,但是我无法使用自动完成小部件搜索它!
有人可以帮帮我吗?
我没有使用任何类型的框架或 cms。
任何形式的帮助我都会非常高兴!
【问题讨论】:
-
也许您应该返回
json_encode($friend_usernames)而不是回显。如果这不起作用,请尝试对 Javascript 数组进行硬编码,以确保自动完成对自身起作用 -
非常感谢您的回答!返回而不是回声没有帮助。我现在将尝试您的第二个建议。
-
自动完成功能正在运行。我觉得这部分是问题所在: var data = $(response).map(function(){ return {value: this.friend_usernames};
标签: javascript jquery json autocomplete jquery-ui-autocomplete