自动完成显示所有条目,不进行任何搜索

请帮帮我…我是新手! 请告诉我该怎么办。

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); 

您将希望获得与面向用户页面上的输入文本类似的结果。

给你一些笔记

  1. 我只使用了mysql_escape_string()可能已经拥有的东西。 虽然这确实有效(绕着破坏的屁股chevy起搏器也可以起作用,但是有更好的方法),不推荐它,这使我们为第2点做准备。

  2. 使用旧的mysql扩展并不是一个好主意,它已被mysqli和PDO取代。

  3. 你需要逃避你的数据, 这是用mysqli完成的 。