【发布时间】:2014-12-28 00:22:25
【问题描述】:
所以我整合了一个搜索功能,可以在您键入时搜索并在文本字段中显示结果,但现在问题是它不会让我轻松删除并且“思考”太快了。关于如何减慢速度的任何想法?
<script>
$(document).ready
(function()
{
$("#tag").keyup
(function()
{
var tag= $(this).val();
if(tag!='')
{
$.ajax(
{
type: "GET",
url: "autocomplete.php",
data: "q=" + tag,
cache: false,
success: function(result)
{
$("#tag").val(result);
}
}
);
}
return false;
}
);
}
);
</script>
然后是这个
<?php
$q_incoming=$_GET['q'];
//$my_data=mysql_real_escape_string($q_incoming);
$mysqli=mysqli_connect('localhost','XXXXXXX','XXXXXXXX','XXXXX') or die("Database Error");
$sql = "SELECT auto_complete_suggestions FROM auto_complete WHERE auto_complete_suggestions LIKE '$q_incoming%' LIMIT 0,1";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error());
if($result)
{
while($row=mysqli_fetch_array($result))
{
echo $row['auto_complete_suggestions']."\n";
}
}
?>
我认为正在发生的事情是,如果我输入“he”,它会提示“help”,但是当我删除“p”时,它会再次提示,因为它有“hel”可以搜索。关于如何允许它删除以及减慢查询速度的任何想法,以便您可以以合理的打字速度输入字母?我可以使用计时功能坐立不安,或者在删除后告诉它忽略?
谢谢!
【问题讨论】:
-
使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs。 -
JQuery 自动完成具有您正在寻找的 exact 延迟选项。如果您反对使用完整的 JQuery UI 库,请查看源代码并弄清楚他们是如何做到的。