我想使用jQuery UI自动完成来从我的数据库加载一个列表,但我不知道我应该使用哪种方法。
我尝试使用“远程数据源”方法http://jqueryui.com/demos/autocomplete/#remote,但它显然不起作用。
我有以下代码:
JS:
$(function() {
$("#client").autocomplete({
source: "nom.php",
minLength: 2,
select: function(event, ui) {
alert(ui);
}
});
});
html:
<label for="client">Client</label>
<input name="client" id="client" class="ui-autocomplete ui-widget-content ui-corner-all" />
PHP:
$query = "SELECT nom from personne";
$result = mysql_query($query, $db);
while($row = mysql_fetch_assoc($result)) {
foreach($row as $val)
$tab[] = $val;
}
print json_encode($tab);
无论我输入什么,它都会显示所有值,但是当我复制nom.php的结果并将其放在源旁边时:它确实有效...
谢谢你的掌舵
答案 0 :(得分:3)
问题是您没有过滤结果服务器端。
使用本地集合时,本地集合会自动完成自动过滤。
但是,使用远程源时,应该过滤源。我想这是为了节省带宽,以便服务器只发送匹配的项目,而不是所有项目,让浏览器过滤它。
调用服务器端方法时,自动填充功能还会发送一个名为term
的参数,您可以使用该参数进行过滤。
您可以在php脚本中保存输入的值:
$term = trim(strip_tags($_GET['term']));
然后在foreach
中,只有将与过滤器匹配的商品添加到您的收藏中,然后再将其发回。