У меня есть php-страница, которая выводит строки из базы данных. Я хочу вызывать его через jquery/ajax каждые 30 секунд. Но я также хочу иметь возможность вызывать страницу в любое время, чтобы, если я добавлю запись через форму, после отправки формы я хотел, чтобы страница, вызываемая ajax, сразу же обновляла результаты. Может ли кто-нибудь указать мне правильное направление или предоставить базовый код, чтобы я мог попытаться понять это? Все еще очень новичок в jquery/ajax.
Вызов Jquery/Ajax с таймером
Ответы (1)
Если вы хотите установить что-то на таймере, вы можете использовать методы 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, см. ajax()
метод jQuery. Если вы запускаете интервал, ничто не мешает вам вызвать тот же ajax()
из других мест вашего кода.
Если вы хотите, чтобы интервал запускался каждые 30 секунд, пока пользователь не инициирует отправку формы... а затем после этого создайте новый интервал, это также возможно:
setInterval()
возвращает целое число, которое является идентификатором интервала.
var id = setInterval(function() {
//call $.ajax here
}, 30000); // 30 seconds
Если вы сохраните этот идентификатор в переменной, вы можете вызвать clearInterval(id)
, что остановит прогресс.
Затем вы можете повторно вызвать вызов setInterval()
после того, как вы завершили отправку формы ajax.
setInterval()
возвращает целое число, которое является идентификатором интервала. Если вы сохраните этот идентификатор в переменной, вы можете вызвать clearInterval(id)
, что остановит прогресс. Затем вы можете повторно вызвать вызов setInterval()
после того, как вы завершили отправку формы ajax.
- person treeface; 28.12.2010