减少ajax请求的数量

时间:2011-11-29 21:12:54

标签: javascript jquery ajax

我有一些充当搜索过滤器的复选框。这些搜索过滤器触发ajax请求,数据从服务器发回并显示给用户。问题是,有几个这样的复选框,用户可以一个接一个地选择,选择说,连续三个等于3个ajax请求。理想情况下,如果用户选择了多个搜索过滤器,我只希望执行一个ajax请求。

我正在尝试集体讨论并获得一些关于如何在执行ajax请求之前等待用户完成复选框检查的输入。我已经想到了诸如添加搜索按钮之类的替代方案,但是用户只需选择他们想要的选项并显示结果就会很好。

我正在使用jQuery,但主要是关于如何实现它的想法。

2 个答案:

答案 0 :(得分:3)

选中第一个复选框后,将setTimeout计时器设置为函数以获取搜索结果。如果设置了另一个复选框,请重置计时器。如果用户等待足够长的时间来触发setTimeout,请执行搜索。通过这种方式,您可以获得两全其美,呼叫次数减少但自动搜索。

答案 1 :(得分:0)

一个简单的改进是设置一个定时器,它在最后一次点击后仅N ms发送请求(当N为500ms时)

var intervalID;
$(".checkbox").bind('click', function() {
    if (intervalID) {
        window.clearInterval(intervalID);
    }

    intervalID = window.setInterval(submit, 500);
})

var submit = function() {
    window.clearInterval(intervalID);
    // submit the XHR call here
};