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