在keyup后 不立刻执行时间,如果是AJAX在keyup后能中断前面的ajax

ieeeei 2012-03-14 06:02:34
今用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查询请求呢?
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Acesidonu 2012-03-14
  • 打赏
  • 举报
回复
在文本有变化时发ajax吧
ieeeei 2012-03-14
  • 打赏
  • 举报
回复
再次感谢 bennman ,我增加了个时间变量上去,延时800毫秒再查询,如果和上次执行时间对比超过500毫秒就再发送次请求。然后重新赋值变量的新时间。
ieeeei 2012-03-14
  • 打赏
  • 举报
回复
感谢 bennman 回复,不过我还是不明白

第一个问题,如何将输入的字符存入 再 ajax呢?总不能 判断length吧

bennman 2012-03-14
  • 打赏
  • 举报
回复
第一个问题,将输入的存入字符串,然后在ajax

第二: 为什么要终止呢,反正已经发过去了,不接受返回值就行了

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧