2010-03-30 1 views
1

Ребята, я должен быть в состоянии сделать ajax-звонок, который будет сделан каждые несколько минут. В основном, вызов ajax состоял бы в том, чтобы проверять новые сообщения электронной почты во входящих. Если есть новые электронные письма, он будет загружать электронные письма в базу данных. Я получил весь код на стороне сервера. Мне просто нужно знать, как мне настроить на передней части ту часть, где вызов ajax выполняется через каждые несколько минут, плюс он должен быть настроен так, что мы не закончим выполнение параллельных вызовов ajax, т. Е. Если ajax вызов не ответил, он не должен запускать новый запрос ajax.Нужно ли выполнять вызов ajax пошагово после фиксированных периодов времени в javascript?

ответ

3

http://www.w3schools.com/jsref/met_win_settimeout.asp
или
http://www.w3schools.com/jsref/met_win_setinterval.asp

заданный интервал времени, вероятно, больше, как то, что вы после этого, вы можете назвать что-то вроде

setInterval (функция() {/ * код, который вы хотите запустить здесь * /}, 100);

тогда ваш код будет работать каждые 100 миллисекунд.

Вам будет необходимо использовать гораздо большее время, примерно 60000 за каждую минуту. Если вы используете метод settimeout, вы можете проверить его на ожидание ответа ajax, и пусть код обработает ответ ajax, установив новый тайм-аут.

+0

В случае, если я хотел бы передать некоторые параметры функции, вызываемой методом settimeout, как бы я это сделал? – Ali

0

Я создал печенье, пульсирующий назад и между сервером и клиентом для хранения t он в последний раз сделал запрос ajax. Затем при загрузке каждой страницы скрипт js считывает файл cookie и устанавливает setTimeout в течение оставшегося времени до следующего запроса ajax.

+0

Зачем прикладывать все усилия, чтобы получить запрос AJAX каждые X секунд, когда s'etInterval' позволяет делать именно это с помощью одного вызова функции? – thecoshman

+0

Поскольку setInterval будет сброшен при загрузке следующей страницы, что имеет высокую вероятность возникновения, если таймер установлен на «несколько минут». Таким образом, ваш запрос ajax ** никогда не будет срабатывать **. – Alsciende

+0

Вы можете обойти это, отправив вызов для проверки новых писем каждый раз, когда загружается страница ... что * возможно * то, что делает загрузка страницы * в любом случае * – Dancrumb