JQuery / Ajax вызов с таймером - PullRequest
       20

JQuery / Ajax вызов с таймером

42 голосов
/ 28 декабря 2010

У меня есть страница php, которая выводит строки из базы данных.Я хочу звонить через jquery / ajax каждые 30 секунд.Но я также хочу иметь возможность вызывать страницу в любое время, так что, если я добавлю запись через форму, после отправки формы я хочу, чтобы страница, вызванная через ajax, сразу обновила результаты.Кто-нибудь может указать мне правильное направление или предоставить какой-то базовый код, чтобы я мог попытаться это выяснить?Все еще очень плохо знаком с jquery / ajax.

1 Ответ

69 голосов
/ 28 декабря 2010

Если вы хотите установить что-то для таймера, вы можете использовать методы JavaScript setTimeout или setInterval:

setTimeout ( expression, timeout );
setInterval ( expression, interval );

Где expression - это функция, а timeout и interval - целые числа в миллисекундах. setTimeout запускает таймер один раз и запускает expression один раз, тогда как setInterval будет запускать expression каждый раз, когда проходит interval.

Так что в вашем случае это будет работать примерно так:

setInterval(function() {
    //call $.ajax here
}, 5000); //5 seconds

Что касается Ajax, см. Метод jQuery ajax() . Если вы выполняете интервал, ничто не мешает вам вызывать тот же ajax() из других мест в вашем коде.


Если вы хотите, чтобы интервал выполнялся каждые 30 секунд, пока пользователь не инициирует отправку формы ... и затем создаст новый интервал после этого, это также возможно:

setInterval() возвращает целое число, которое является идентификатором интервала.

var id = setInterval(function() {
    //call $.ajax here
}, 30000); // 30 seconds

Если вы храните этот идентификатор в переменной, вы можете вызвать clearInterval(id), что остановит прогрессию.

Затем вы можете восстановить вызов setInterval() после завершения отправки формы ajax.

...