根据类型值获取AJAX的自动完成选项

时间:2017-06-06 17:43:45

标签: php jquery ajax jquery-ui autocomplete

我需要使用自动完成(jQuery UI),以便在您键入时建议我的数据库中的用户名。

常规方法是使用自动完成的source,但我的网站有大量的用户名,我不希望有一个巨大的字符串来保留用户名。 我正在考虑一种更好的方法:

当用户键入用户名的第一个字母时,会向PHP文件调用AJAX post请求,该文件将获取以该字母开头的用户名。 然后,它将列表返回给jQuery,然后处理它并使结果成为自动完成的选项。

这比使用一个包含所有选项的大字符串更好吗?我自己无法编写代码(无法弄清楚如何将mysql结果转换为自动完成选项)。 对此进行编码的正确方法是什么?谢谢!

1 个答案:

答案 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" />