Уменьшить количество запросов AJAX

javascript jquery ajax

104 просмотра

2 ответа

У меня есть несколько флажков, которые действуют как поисковые фильтры. Эти поисковые фильтры запускают запрос ajax, и данные отправляются обратно с сервера и отображаются пользователю. Проблема в том, что есть несколько таких флажков, и пользователь может выбирать один за другим, выбирая, скажем, три подряд, что равняется 3 запросам ajax. В идеале я хотел бы, чтобы только один запрос ajax был выполнен, если пользователь выбрал более одного поискового фильтра.

Я пытаюсь провести мозговой штурм и получить некоторую информацию о том, как я могу подождать, пока пользователь закончит проверять флажки перед выполнением запроса ajax. Я думал об альтернативах, таких как добавление кнопки поиска, но было бы неплохо, чтобы пользователь просто выбрал нужные параметры и отобразил результаты.

Я использую jQuery, но в основном я только после идей о том, как это реализовать.

Автор: aziz punjani Источник Размещён: 13.07.2019 10:31

Ответы (2)


3 плюса

Решение

Когда первый флажок установлен, установите setTimeoutтаймер на функцию для получения результатов поиска. Если установлен другой флажок, сбросьте таймер. Если пользователь достаточно долго ждет срабатывания setTimeout, выполните поиск. Таким образом, вы получаете лучшее из обоих миров, меньше звонков, но автоматический поиск.

Автор: BNL Размещён: 29.11.2011 09:15

0 плюса

Простым улучшением является установка таймера, который отправляет запрос только через N мс после последнего щелчка (когда N, скажем, 500 мс)

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
};
Автор: u.k Размещён: 29.11.2011 09:20
Вопросы из категории :
32x32