2

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

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

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

+0

Вы уже пробовали использовать setInterval и просто вызвать веб-сервис в обратном вызове? – kinakuta

ответ

3

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

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

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

Использование setTimeout может быть лучшей идеей:

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

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

+0

Идея setTimeout хорошая. – kinakuta

0

Вы можете сделать это с помощью чистого старого 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 непосредственно после завершения обновления.

+0

Что делает Ajax? SetTimeout не похоже на тайм-аут? – 001

+0

Я предположил, что вы использовали AJAX для сбора данных.Если нет, просто игнорируйте эту часть. – Kranu

4

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

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

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

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

+0

Я пробовал это, похоже, он не работал? <Сценарий SRC = "http://code.jquery.com/jquery-latest.js"> 001

+0

Вы получаете какую-либо ошибку? – Headshota

+1

в вашем коде там вы ссылаетесь на $ ('mybutton'), если это идентификатор, к которому вы обращаетесь, вы должны использовать $ ('# mybutton') – Headshota