我需要使用自动完成(jQuery UI),以便在您键入时建议我的数据库中的用户名。
常规方法是使用自动完成的source
,但我的网站有大量的用户名,我不希望有一个巨大的字符串来保留用户名。
我正在考虑一种更好的方法:
当用户键入用户名的第一个字母时,会向PHP文件调用AJAX post请求,该文件将获取以该字母开头的用户名。 然后,它将列表返回给jQuery,然后处理它并使结果成为自动完成的选项。
这比使用一个包含所有选项的大字符串更好吗?我自己无法编写代码(无法弄清楚如何将mysql结果转换为自动完成选项)。 对此进行编码的正确方法是什么?谢谢!
答案 0 :(得分:0)
这是我以前做过的一个例子:
JS
$("#username").autocomplete({
source: "autocomplete.php", // Source for autocomplete must be an array, echoed out via json
minLength: 1 // Min length before autocomplete starts searching the array from source
});
PHP
// Pull in searchterm from username, $_GET['TERM'] is a built-in variable for autocomplete
$term = strtolower($_GET['term']);
$searchTerm = "$term%";
$query = "SELECT distinct username from access WHERE username LIKE ? ORDER BY username";
$stmt = $db->prepare($query);
if($stmt){
$stmt->bind_param("s",$searchTerm);
$stmt->execute();
$stmt->bind_result($username);
}
// Create array for autocomplete to search
$usernameList = array();
while ($stmt->fetch()){
$usernameList[] = $username; // Assign names to the list
}
// Echo json data for autocomplete to retrieve
echo json_encode($usernameList);
$db->close();
HTML
<input type="text" name="username[]" id="username" />