我正在使用django-ajax模块,我有一些基于ajax的工作:
views.py
@ajax
@login_required
def search_dist(request):
dist_list = Distributor.objects.all()
if request.method == 'GET':
starts_with = request.GET['query']
if starts_with:
dist_list = Distributor.objects.filter(
surname__istartswith=starts_with)
return render(request, 'distributors/distributors_list.html', {'distributors': dist_list})
JS
var search = $('#search');
search.on('keyup', function() {
window.setTimeout(function() {
var query;
query = search.val();
ajaxGet('{% url "distributors:search_dist" %}', {
'query': query
}, function(content) {
$('#distributors').html(content);
set_favorite();
})
}, 1000);
});
它工作正常,但是当我打开我的控制台时,我发现服务器对同一件事做出了太多的请求。例如:在我输入“Jhon”后,我看到了
[03/Jun/2015 10:56:36]"GET /distributors/search_dist?query= HTTP/1.1" 200
25次。我的代码有问题还是正常的?
答案 0 :(得分:0)
我发现你只使用了setTimeout
。但是你也需要使用clearTimeout
函数。
search.on('keyup', function() {
var timer;
clearTimeout(timer);
var query = search.val();
timer = setTimeout(function() {
ajaxGet('{% url "distributors:search_dist" %}', {
'query': query
}, function(content) {
$('#distributors').html(content);
set_favorite();
})
}, 1000);
});