【问题标题】:Django-ajax multiple requests.Django-ajax 多个请求。
【发布时间】:2015-06-03 10:59:00
【问题描述】:

我正在使用 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 次。我的代码有问题还是很正常?

【问题讨论】:

  • 你能用blur代替keyup吗?
  • @Tushar,它发出的请求较少,但我必须散焦表单才能提交查询,这不是我需要的。

标签: jquery python ajax django


【解决方案1】:

我看到你只使用了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);
});

【讨论】:

    猜你喜欢
    • 2020-03-03
    • 2016-01-02
    • 2013-02-15
    • 2011-11-28
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    相关资源
    最近更新 更多