【发布时间】:2017-12-13 05:11:21
【问题描述】:
我只是创建了一个具有搜索功能的网页,并且在每次搜索中我都有一个数据库查询来返回建议。但是当我触发这个 onkeyup 函数太多次(我的意思是 10-20 次)时,因为它在尝试时一次又一次地被触发,在太多触发网站崩溃并给我一个错误页面之后,标准谷歌杂项错误页面(不是 php错误页面解释什么是错误的)1分钟后,一切正常。你有什么想法吗?
谢谢。
这是我的 JS 代码
var timer;
$('#search').keyup(function(e){
timer = setTimeout(function(){
var searchname = $('#search').val();
$.ajax({
url:"php/fetchsuggest.php",
type:'POST',
data:{searchname:searchname},
success: function(data){
$('#fetch').show();
$('#fetch').html(data);
//select fetch as val
$('.fetched').click(function(){
var innerval=$(this).text();
$('#search').val(innerval);
$('#fetch').hide();
$('#search').focus();
});
}
});
},300);
});
【问题讨论】:
-
盲目地在 keyup 上触发事件是不好的做法。如果你真的想要一个 keyup 搜索,那么你应该在 javascript 中添加一个 0.5 秒的超时,并在下一个 keyup 事件上“覆盖它”(清除它并设置另一个)。如果启动了新的 ajax 请求,也会中止之前的 ajax 请求。
-
@apokryfos 谢谢你的回答。我明白你在说什么,我现在就试一试。我会让你知道结果。
标签: php mysql ajax search dynamic