如果您想使用基本的 JQuery,您可以查看远程数据源示例中的
示例http://jqueryui.com/autocomplete/#remote
你可以看到:
$( "#birds" ).autocomplete({
source: "search.php",
minLength: 2,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
minlenght 是您可以输入以开始研究的最小字母。
在服务器端,您必须创建类似
//connect to your database
$term = trim(strip_tags($_GET['term']));//retrieve the search term that autocomplete sends only when there are 2 char or more
$qstring = "SELECT description as value,id FROM test WHERE description LIKE '%".$term."%'"; //ONLY AN EXAMPLE
$result = mysql_query($qstring);//query the database for entries containing the term
while ($row = mysql_fetch_array($result,MYSQL_ASSOC))//loop through the retrieved values
{
$row['value']=htmlentities(stripslashes($row['value']));
$row['id']=(int)$row['id'];
$row_set[] = $row;//build an array
}
echo json_encode($row_set);//format the array into json data
如果您不在跨域上,则需要输入类似 JSON 的内容(在跨域上,您需要 JSONP,但这是另一回事)
[{"value":"Some Name","id":1},{"value":"Some Othername","id":2}]
最糟糕的做法 另一种解决方案(但在逻辑上不可行)是在记录集上使用循环创建整个 JS 数组,生成类似的字符串。
var availableTags = [ "ActionScript", "AppleScript", "Asp",...];
所以你的表格在页面中是硬编码和不可变的,但是每个数据都暴露在页面的源代码中,这只是为了学习目的,但永远不要在生产中这样做。
如果您不想以替代模式挖掘表格,则需要指定您不会如何挖掘,但自动完成基于 2 个想法。1)每个按键都有助于做出更好的限制,因此每次按键都需要进行另一个查询
2)当按下新键时,最后一个结果并不重要,所以最后一个请求被放弃。
因此,在某些情况下,当键入的键很少时,您可以在查询中使用动态限制,您可以将结果限制为有限的记录数量,当键入的序列增长时,您可以移除限制或限制为大量记录因为当时的条件使它的工作更好。
我希望有用