jQuery自动完成Mysql PHP

嗨,有人可以看看这个,让我知道我哪里出错了。 我试图让jQuery UI自动完成工作。 这是我的代码:这是search.php

include "db_connect.php"; $search = $_GET['term']; $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong'); $rows = array(); while ($row = mysql_fetch_assoc($result)){ $rows[] = $row; } print json_encode($rows); ?> 

这是我的javascript内联脚本

  $(document).ready(function() { $('#auto').autocomplete( { source: "./search.php", minLength: 3 }); });  

这就是’自动’div

 

当我使用firebug查看调用时,我看到search.php正在返回

 [{"Title":"Sin City"}] 

jQuery只显示UNDEFINED的任何想法?

看看jquery ui自动完成文档 。 您要返回的JSON与自动完成查找的内容不匹配。 您返回的对象必须具有名为label或value(或两者)的属性。

您可以尝试以下选项:

选项1:更改返回的JSON

更改要返回的JSON以包含标签/值属性,例如:

 [{"label":"Sin City"}] 

从示例中它似乎也使用id属性。 我相信以上是自动完成显示值列表的最低要求。 我认为你也可以返回一个字符串数组,它将以与上面完全相同的方式呈现它。

 [ "Sin City", "Etc" ] 

选项2:更改私有_renderfunction

更改自动完成的private _renderItem函数以使用自定义属性,如此自动完成示例 (未经测试)中所示:

 $( "#project" ).autocomplete({ source: "./search.php", minLength: 3 }) .data( "autocomplete" )._renderItem = function( ul, item ) { return $( "
  • " ) .data( "item.autocomplete", item ) .append( item.Title ) .appendTo( ul ); };

    这是一个更灵活但更丑陋的imho。

    @Shaun感谢队友,有时你只需要有人指出明显的东西。 我终于开始工作的方式是

      include "db_connect.php"; $search = protect($_GET['term']); $result = mysql_query("SELECT Title FROM `movie` WHERE `Title` LIKE '%$search%' ORDER BY Title ASC") or die('Something went wrong'); $json = '['; $first = true; while ($row = mysql_fetch_assoc($result)) { if (!$first) { $json .= ','; } else { $first = false; } $json .= '{"value":"'.$row['Title'].'"}'; } $json .= ']'; echo $json; 

    至少在$ search上运行mysql_real_escape_string(),然后将其插入SQL查询。

    来源:你的javascript中的位可能搞砸了。 你应该删除。 如果’search.php’位于documentroot目录的’top’。

    Firebug也可能会帮助你在沟通中达到巅峰。

    我打算这样说,总是清理用户输入。

    很难说因为我从未使用过jQuery自动完成function,但我认为你应该定位“#auto”的值。 像这样:$(’#auto’)。val()。autocomplet