我想扼杀我写的以下ajax实时搜索功能。
我这样做只有在输入最少2个字符时才会发送请求。我还希望将ajax限制为四分之一秒,以便用户有机会输入他们想要的内容。我在一个setTimeout函数中包装了ajax,但是没有用。
$('#search').keyup(function() {
var string = $(this).val();
if (string.length >= 2) {
$.ajax({
'type': 'GET',
dataType: 'html',
'url': url,
'success': function(data){
// show the search data
}
});
} else if (string.length <= 1) {
// restore page content as of when it was loaded
}
});
我应该问的另一件事,我应该缓存ajax的结果,不是吗?
答案 0 :(得分:1)
查看(或考虑使用)Jquery Autocomplete的源代码它几乎完全符合您的要求,它只在暂停后提交数据以确保用户完成并且具有缓存,以及其他功能。
答案 1 :(得分:1)
只是if (string.length >= 2)
中的代码:
var elem = $(this);
// save newest search
elem.data('search',search)
// clear pending searches
.clearQueue().stop()
// waits
.delay(250)
// runs search
.queue(function() {
$.ajax({
'type': 'GET',
dataType: 'html',
'url': url,
'success': function(data){
// check if can be run
if(elem.data('search') != search)
return;
// show the search data
}
});
});