jquery ui自动完成数据库

时间:2010-05-20 12:27:58

标签: database json jquery-ui autocomplete

我想使用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的结果并将其放在源旁边时:它确实有效...

谢谢你的掌舵

1 个答案:

答案 0 :(得分:3)

问题是您没有过滤结果服务器端。

使用本地集合时,本地集合会自动完成自动过滤。

但是,使用远程源时,应该过滤源。我想这是为了节省带宽,以便服务器只发送匹配的项目,而不是所有项目,让浏览器过滤它。

调用服务器端方法时,自动填充功能还会发送一个名为term的参数,您可以使用该参数进行过滤。

您可以在php脚本中保存输入的值:

 $term = trim(strip_tags($_GET['term']));

然后在foreach中,只有将与过滤器匹配的商品添加到您的收藏中,然后再将其发回。