我正在嘗試使用jquery ui自動填充小部件來搜索我的用戶表。
從我的用戶表,這兩個領域,我想尋找:
使用jquery ui自動完成在MVC中搜索JSON輸出
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」, 「[email protected]」, 「user2」,「[email protected]」]
所以我能夠在網站上輸出JSON,但是我無法使用自動填充小部件搜索它!
請問有人可以幫我嗎?
我沒有使用任何一種框架或cms。
我會很高興任何形式的幫助!
也許你應該返回你的'json_encode($ friend_usernames)'而不是echo。如果這不起作用,請嘗試對Javascript數組進行硬編碼以確保自動完成自身工作 – Flame 2015-03-13 15:42:05
非常感謝您的回答!返回而不是回聲沒有幫助。我現在會嘗試你的第二個建議。 – Schwesi 2015-03-13 15:53:48
自動完成本身正在工作。我有這樣的感覺,這部分是問題所在:var data = $(response).map(function(){ return {value:this.friend_usernames}; – Schwesi 2015-03-13 16:10:42