[英]jQuery Autocomplete 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内联脚本
<script type="text/javascript">
$(document).ready(function()
{
$('#auto').autocomplete(
{
source: "./search.php",
minLength: 3
});
});
</script>
这是“汽车”股利
<div id="searchTxtFieldDiv">
<p><input type="text" id="auto" /></p>
</div>
当我使用Firebug查看呼叫时,我看到search.php返回了
[{"Title":"Sin City"}]
jQuery只是显示未定义的任何想法?
看看jquery ui自动完成文档 。 您返回的JSON与自动完成功能所寻找的不匹配。 您返回的对象必须具有名为label或value(或两者)的属性。
您可以尝试以下选项:
更改返回的JSON以包括标签/值属性,例如:
[{"label":"Sin City"}]
从示例中,它似乎还使用了id属性。 我相信以上是自动完成显示值列表的最低要求。 我认为您还可以返回一个字符串数组,它将以与上述完全相同的方式呈现它。
[ "Sin City", "Etc" ]
更改私有_renderItem函数的自动完成功能,以使用您的自定义属性,如以下自动完成示例所示(未测试):
$( "#project" ).autocomplete({
source: "./search.php",
minLength: 3
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( item.Title )
.appendTo( ul );
};
这有点灵活,但恕我直言。
@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目录的“顶部”。
Firebug也可能会帮助您在交流方面达到顶峰。
我要说的是,总是清理用户输入。
很难说,因为我从未使用过jQuery自动完成功能,但我认为您应该将“ #auto”的值作为目标。 像这样的东西:$('#auto')。val()。autocomplet
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.