Ajax: подождите X секунд до загрузки - PullRequest
2 голосов
/ 07 декабря 2009

У меня есть форма поиска, которая показывает результаты в реальном времени в указанном div (посмотрите там Фильтр результатов с Jquery )

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

Есть ли способ получить ajax, загружающий скрипт результата через указанное время?

Например, если я установил один флажок, сценарий должен ждать 2 секунды, прежде чем загружать сценарий. Таким образом, пользователь может установить, например, 2 или 3 флажка, и когда он остановится, чтобы сделать свой выбор, ajax загрузит скрипт.

- изменить -

Вызов ajax для скрипта не выполняется через функцию, это код:

$(document).ready(function()
    {
        $('#category_filter').click(function()
        {

            var catArray = new Array();
            var j = 0;
            for(var i = 0; i < <?php echo $categories_count;?>; i++)
            {
                if(document.category_filter.filter_id[i].checked == 1)
                {
                    catArray[j] = document.category_filter.filter_id[i].value;
                    j++;
                }
            }
if(catArray[0])
            $.ajax(
            {
                type:    "POST",
                 url:     "index.php?action=ticket-search",
                data:    ({ filter: 'category',filter_id : catArray.toString() }),
                success: function(msg)
                {
                    $('#t_content').html(msg)
                                .hide()  
                                .fadeIn(700, function() {});  
                }
            });
          });
        });
      });

Ответы [ 3 ]

1 голос
/ 07 декабря 2009

Попробуйте использовать setTimeout.

Пример

setTimeout("alert('hello')",2000);
1 голос
/ 07 декабря 2009

Используйте функцию setTimout. Вот так:

var timer = setTimeout(yourFunction(), 2000);

Тем не менее, обязательно добавляйте событие, чтобы очистить этот тайм-аут при каждой проверке новой кнопки, иначе вы в конечном итоге запускаете Ajax много раз.

if(timer) { clearTimout(timer); }

var timer = setTimeout(yourFunction(), 2000);

0 голосов
/ 07 декабря 2009

Вы можете использовать вызов setTimeout (), чтобы подождать несколько секунд.

  var t = setTimeout(myAjaxFunction, 2000); //wait two seconds

Возможно, вам придется проверить, установлен ли тайм-аут, если вы разрешаете пользователю устанавливать несколько флажков. Это позволяет избежать нескольких вызовов AJAX, каждый из которых ожидает 2 секунды. Логика будет тогда:

  1. Пользовательские клики
  2. Есть ли тайм-аут? Если да, игнорируйте щелчок
  3. Иначе Установить тайм-аут для вызова AJAX
...