好的,我有一个搜索建议下拉菜单。
当我输入某个字符时,它会显示所有与我输入的值相同的结果。
使用函数 keyup()。
var search = $("#search"),
result = $('ul.dropdown');
search.keyup(function(){
if (search.val() !== "") {
load();
$.post('search.php?do=search', {search : search.val()}, function(data){
if (data == ""){
stop_load();
} else {
result.html(data);
}
});
$.post('search.php?do=search&data', {data : search.val()}, function(msg){
stop_load();
$('#end_results').html(msg);
}); /** actual search **/
} else {
$('#end_results').html('');
result.html('');
}
});
以及为此的PHP:
} else { // the info
$search = htmlentities(trim($_POST['search']));
$search_query = "'%$search%'";
$get_search = $db->prepare("SELECT * FROM `kit_info` WHERE `kit_name` LIKE $search_query LIMIT 10");
$get_search->execute();
while ($row = $get_search->fetch(PDO::FETCH_ASSOC)){
$return .= '<li onClick=\'$("#search").val("'.$row['kit_name'].'");$("ul.dropdown").html("");search();\'>'.$row['kit_name'].'</li>';
}
echo $return;
}
如您所见,PHP 回显了一个列表,该列表将在下拉建议中。
问题
当用户搜索 5 分钟左右,每次输入新字符等时,我的主机会自动阻止该 IP 发送太多请求。
那是因为客户端已经超过了他的请求限制,并且将被阻止另外 24 小时。
我想到的一个解决方案:
从 mysql 加载所有数据,首先在页面加载时,然后执行操作。
问题
除了扩大限制之外,还有什么更好、更简单的解决方案吗?
我的解决方案很棒并且会奏效吗?我该怎么做?
非常感谢!