我整天都在努力完成jQuery autocomplete。我无法弄清楚如何将jQuery UI自动完成与mysql数据库连接。我不知道php文件应该是什么样子,如何将请求发送到php等等。在jQuery网站上的演示和文档中,有一个简单的例子,其中源为:source:“search.php”。那么search.php如何知道我在输入框中输入了什么?没有查询附加到search.php:/我注意到json被使用..我很困惑,我已经尝试了十几种没有结果的方法。我需要的是简单的自动完成功能,其中包含我在文本框中输入的文字的城市名称。
我的数据库看起来像:
table_cities:
-------------
id: -city id
name: -city name
我需要自动填充功能,向我展示包含我在文本框中输入的文字的城市,例如
“po”将导致“利物浦”“朴茨茅斯”......
html
----
<input type="text" id="cities" />
js
--
$( "#cities" ).autocomplete({
...
谢谢!
答案 0 :(得分:2)
您只需要返回一个JSON编码的id / value对象数组。自动完成插件还通过名为“q”的get参数发送,该参数包含当前输入框中的内容。一个可以工作的search.php
文件的简单示例:
$autocomplete_value = mysql_real_escape_string($_GET["q"]);
$sql = "select id, name from table_cities where name LIKE '%$autocomplete_value%'";
$query = mysql_query($sql);
$results = array();
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
array_push($results, array('id' => $row['id'],
'value' => $row['name']) );
}
echo json_encode($results);
你需要适应你可能正在使用的任何PHP框架,但模式应该是相同的 - 循环结果创建一个'id'和'value'对象的数组,然后json编码。< / p>
编辑:您可能希望更新SQL以进行小写比较(因此忽略大小写)和其他此类增强功能,但这至少应该让您朝着正确的方向前进。
答案 1 :(得分:0)
我还没有使用jQuery自动完成功能,但很明显它会向您的Web服务器发回AJAX,提供已经在框中输入的数据。 Web服务器将根据您的需要查询数据库,并返回应显示的结果。
查询不会是jQuery插件的一部分;你必须自己写。
答案 2 :(得分:-1)
您可以在while循环中使用“。=”。
$data = "";
while($row = mysqli_fetch_assoc($result))
{
$data .= "bla bla bla..."
}