今用jquery 写一ajax,在输入框字符更改后执行ajax查询并返回数据用于自动完成的显示。
正常逻辑上没啥问题,但是有个细节让我有点蛋疼。比如我查找 “CSDN”字符,当你按下C键后,他会执行一次AJAX查询,按下S、D、N后都会发送ajax, 这个很浪费性能,我预期查询的只是CSDN,所以我在想,如何当按键按下后 延时 1秒再执行AJAX,这样会减少 请求的数量。所以我写了个SB的脚本:
$().ready(function(){
$('input[name=k]').bind("keyup focus",function(){
setTimeout(function(){
$.getJSON({....})
},1000)
})本很幸福满满完成任务了,结果测试发现,请求的次数一次没少,只是各请求延时了一秒而已。
所以我想,要怎么做才能实现 一秒后(那时候用户可能已经输入完所有查询的字符)再进行 本输入框的字符ajax查询请求?第二个问题,如果查询请求延时4秒以上(当然不管这是很差的体验),当我在更改输入框的文字后,怎么中断前一次查询而进行新的字符ajax查询请求呢?