自动完成显示所有条目,不进行任何搜索
请帮帮我…我是新手! 请告诉我该怎么办。
processed.php
$row['name']); } echo json_encode($results); ?>
的index.php
$(document).ready(function(){ $("#artist").autocomplete( { source: 'processed.php', }); });
我有这个问题: http : //jsbin.com/alaci5
自动填充需要源(当指定URL过滤掉结果时)。
从文档:
字符串:使用字符串时,自动完成插件期望该字符串指向将返回JSON数据的URL资源。 它可以位于同一主机上,也可以位于不同的主机上(必须提供JSONP)。 自动完成插件不会过滤结果,而是使用术语字段添加查询字符串,服务器端脚本应使用该字段来过滤结果。 例如,如果source选项设置为“ http://example.com ”并且用户键入foo,则会向http://example.com?term=foo发出GET请求。 数据本身可以与上述本地数据的格式相同。
所以在PHP代码中你必须这样做:
include_once('../../dbConnect.inc.php'); $sql="SELECT name FROM artist WHERE `name` like '%".mysql_real_escape_string($_GET['term'])."%'"; $artist = select($sql); $output_items = array(); while($row = mysql_fetch_array($artist)) { $results[] = array('label' => $row['name']); } echo json_encode($results);
该自动完成function可能会将一些变量传递给您的processed.php页面。
使用var_dump($_GET)
查看您传递的所有内容。
在其中一个$_GET
元素中,您将拥有页面上存在的文本框的内容。 为了演示,我将使用$_GET['text']
。 您需要找出哪个部分包含您需要的数据。
您需要做的是使用此值搜索数据库以获取要返回的结果列表。
$sql="SELECT name FROM artist"; $artist = select($sql);
这是您存在的脚本。 这可能最终看起来像这样。
$text_input = mysql_escape_string($_GET['text']); $sql="SELECT name FROM artists WHERE name LIKE '%$text_input%'"; $artist = select($sql);
您将希望获得与面向用户页面上的输入文本类似的结果。
给你一些笔记
-
我只使用了
mysql_escape_string()
可能已经拥有的东西。 虽然这确实有效(绕着破坏的屁股chevy起搏器也可以起作用,但是有更好的方法),不推荐它,这使我们为第2点做准备。 -
使用旧的mysql扩展并不是一个好主意,它已被
mysqli
和PDO取代。 -
你需要逃避你的数据, 这是用mysqli完成的 。