JQuery - нажмите кнопку каждые 2 секунды - PullRequest
2 голосов
/ 18 июня 2011

По сути, у меня есть кнопка обновления, когда пользователь нажимает кнопку обновления, вызываемую веб-службой, возвращает данные и обновляет контейнер div для отображения новых данных.

Но я хочу обновить контейнер div без того, чтобы пользователь нажимал кнопку обновления ....

Как сделать так, чтобы jquery нажимал на мою кнопку каждые 2 секунды, не обновляя всю страницу? или есть лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 18 июня 2011

Вы можете использовать setInterval для вызова функции после каждого заданного периода времени:

setInterval(function(){ 
   $("#myBtn").click();
},2000);

это будет вызывать событие click для элемента myBtn каждые 2 секунды.

Будьте осторожны, если вы отправляете ajax-запрос, иногда может потребоваться больше времени для получения ответа, чем ваш интервал.это может вызвать некоторые проблемы.поэтому рассмотрите возможность использования рекурсивных вызовов вместо этого. (вызовите функцию щелчка из функции обратного вызова ajax)

3 голосов
/ 18 июня 2011

Вы можете использовать setInterval для запуска функции каждые две секунды:

Вызывает функцию несколько раз с фиксированной задержкой между каждым вызовом этой функции.

И затем вызываемая функция вызывает обработчик нажатия кнопки. В идеале вы могли бы вызывать обработчик кликов напрямую, без необходимости произносить $x.click().

Лучше было бы использовать setTimeout:

Выполняет фрагмент кода или функцию после указанной задержки.

Затем функция обратного вызова будет вызывать обработчик щелчка, и, когда это закончится, она снова вызовет setTimeout, чтобы инициировать себя. Такой подход не даст вашим событиям превзойти друг друга. Поскольку весь код принадлежит вам, вы можете реструктурировать его так, чтобы обратные вызовы $.ajax success и error (или, возможно, обратный вызов complete) могли перезапустить таймер.

0 голосов
/ 18 июня 2011

Вы можете сделать это с помощью чистого старого javascript с помощью команды setInterval.Вот пример:

//Run updates every 2 seconds
var x=setInterval(doUpdates,2000);
function doUpdates() {
  //Do whatever updating you need
}

Если вы хотите остановить автоматические обновления здесь, вы можете использовать команду clearInterval(x);.

Если обновление данных занимает много времени, вы можете сделать так, чтобы между каждым запросом был интервал в 2 секунды.

function doUpdates() {
  //Do whatever updating you need
  $.ajax({
    'success':function() {
      setTimeout(doUpdates,2000);
    }
  });
}

Для второго примера вы должны поместить setTimeoutнепосредственно после завершения обновления.

...