2010-12-28 3 views
37

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

ответ

67

Если вы хотите установить что-то на таймере, вы можете использовать в 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() method. Если вы запустите интервал, нет ничего, что помешает вам позвонить тому же ajax() из других мест вашего кода.

+0

Спасибо за ответ! Итак, ваше высказывание, если я использую приведенный выше код, чтобы обновить вызов ajax каждые 5 секунд, то на той же странице у меня есть форма, которую кто-то заполняет, которая получает submit, после того, как она закончила добавление записи, я могу вызвать ту же функцию setInterval выше, и это не будет У вас есть 2 экземпляра этой функции одновременно? – John

+8

Итак, вы хотите, чтобы интервал выполнялся каждые 30 секунд * до тех пор, пока пользователь не инициирует отправку формы ... а затем создайте новый интервал после этого? Это также возможно. 'setInterval()' возвращает целое число, которое является идентификатором интервала. Если вы храните этот идентификатор в переменной, вы можете затем вызвать 'clearInterval (id)', который остановит прогрессию. Затем вы можете восстановить вызов 'setInterval()' после того, как вы заполните форму представления ajax. – treeface

Смежные вопросы