gpt4 book ai didi

php - jQuery keyup 函数立即加载结果 - 阻止我与主机联系

转载 作者:行者123 更新时间:2023-11-29 13:53:31 25 4
gpt4 key购买 nike

好的,我有一个搜索建议下拉菜单。

当我输入某个字符时,它将显示与我输入的值%LIKE%的所有结果。

使用函数 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加载所有数据,然后执行操作。

问题

除了扩大限制之外,还有什么更好、更简单的解决方案吗?

我的解决方案很棒并且有效吗?我该怎么做?

非常感谢!

最佳答案

有一些快速且简单的方法可以做到这一点。其中之一是使用超时。

当我在 2 秒内输入 20 个字符时,不需要进行 20 次查找。

此外,您可能不想从第一个字符开始搜索,但假设用户输入了 3 个字符。

$('#mysearchelement').keyup(function(){

// stop any old timers to prevent double execution
if($('#mysearchelement').data("searchtimer") !== undefined)
{
clearTimeout($('#mysearchelement').data("searchtimer"));
}

// here we limit to minimum 3 characters before searching, you can omit this.
if($(this).val().length > 2)
{
var timer = setTimeout(mySearchFunction, 500); // wait 500 ms before searching
// store the timer in the search field so we know if there are any running
$(this).data("searchtimer", timer);
}

});


function mySearchFunction()
{
//here you do you actual calls to search.
}

关于php - jQuery keyup 函数立即加载结果 - 阻止我与主机联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com