JQuery & Timer :: Обновление текста гиперссылки из веб-службы

Я должен выяснить, как это сделать: выполнить веб-сервис на удаленном сервере, чтобы определить, сколько сообщений доступно для чтения и заполнения текста гиперссылки с количеством сообщений. Фокус в том, что мне бы хотелось, чтобы это было запущено с таймера (каждые 5 минут, например). Вот что я возился с

$.ajax( {type:'Get',url:'http://foobar.com/ws',success:function(messageCount) { $('a.message').text(messageCount + ' Messages'); } }) 

но, по общему признанию, я совершенно не знаю, когда дело касается таймеров в javascript / jquery. Любая помощь будет принята с благодарностью.

Спасибо!

Вам нужно использовать функцию setInterval (). Это запустит определенную функцию с заданным интервалом. Попробуй это:

 $(function() { setInterval("getDataFromWS()", 300000) // 300,000 miliseconds is 5 minutes }); function getDataFromWS() { $.ajax({ type:'Get', url:'http://foobar.com/ws', success:function(messageCount) { $('a.message').text(messageCount + ' Messages'); } }) } 

Если вы хотите сделать это периодически, вы должны использовать setInterval .

 //create the timer (and save the unique id returned //so we can stop it later if needed, using clearTimer()) //This will fire every 300,000 millisecs (= 5 mins) //and call the updateMessageCount function var msgCounTimer = setInterval(updateMessageCount, 300000); function updateMessageCount() { $.ajax({ type:'GET', url:'http://foobar.com/ws', success:function(messageCount) { $('a.message').text(messageCount + ' Messages'); } }); } 

Если, однако, вы хотите сделать это с помощью setTimeout – вы можете делать это периодически с помощью setTimeout за исключением того, что вам нужно будет делать вызов для настройки таймера каждый раз.

В одном случае я могу подумать, где вы, возможно, захотите использовать setTimeout вместо setInterval будет тогда, когда работа, которую вы выполняете в функции, называемой тайм-аутом ( updateMessageCount в моем примере ниже), занимает больше времени, чем интервал времени ожидания, следующий таймаут (при использовании setInterval ) появится мгновенно, так как таймер будет срабатывать каждые n секунд независимо от того, выполняет ли функция, вызванная предыдущим таймаутом. Если вместо этого вы хотели убедиться, что между последовательными вызовами будет выполняться n миллисекунд для вашего обработчика тайм-аута (в отличие от вашего обработчика тайм-аута, вызываемого каждые n миллисекунд), вы должны использовать setTimeout вместо этого и настраивать его каждый раз, когда вы заканчиваете свой тяжелый обработка.

Заметьте, я вижу, что вы используете абсолютный URL-адрес в этом примере, поэтому я решил указать это на случай, если вы не знакомы с ним – следите за политикой того же происхождения, которая ограничивает ваш JavaScript от запросов к доменам другим чем тот, из которого он возникает.

Вам нужно посмотреть функцию setTimeout в Javascript

например var t=setTimeout("yourfunction()",10000);