【发布时间】:2011-02-21 20:25:06
【问题描述】:
我想使用 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 的结果并将其粘贴到源代码旁边时:它确实有效...
谢谢你的掌舵
【问题讨论】:
-
这应该可以。你必须检查你的日志,也许用像firebug这样的工具做一些非常简单的javascript调试(只是为了检查函数是否被很好地调用,并且'nom.php'被调用并返回良好的数据)。
-
我实际上不明白这个自动完成是如何工作的:当我使用 firefox 进行调试时,我看到响应是 ["Marion","AM","PE","AH","JP" ,"FD"] 无论我写什么,我都希望自动完成功能从这个列表中选择好的值,但事实并非如此。当我写 source: ["Marion","AM","PE","AH","JP","FD"] 时,它确实工作正常。
-
我找到了某种解决方法,但我更愿意了解我的代码有什么问题。这是解决方法: $query = "SELECT nom from employee WHERE nom LIKE '%" 。添加斜杠($_GET['term'])。 "%'";
-
是的,您需要使用 where 子句过滤项目...绝对...
-
您可能还想只选择有限数量的结果,例如前 10/20 名,也可以订购它们
标签: database json jquery-ui autocomplete