Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обновление div-a по условию (https://javascript.ru/forum/jquery/27969-obnovlenie-div-po-usloviyu.html)

celeron 01.05.2012 22:28

Обновление div-a по условию
 
Здравствуйте уважаемые форумчане.
Есть скрипт рейтинга (звезды) на jquery, но сложность в том, что оцениваются не статические объекты, а треки, которые все время меняются. Хотелось бы обновлять рейтинг не каждую секунду, а только когда начинается новая песня.

Есть php скрипт, который выводит название текущего трека track.php
Есть рейтинг vote.php

Подскажите пожалуйста как обновлять блок с рейтингом только когда меняется результат выполнения скрипта track.php а не так, каждые несколько секунд?
var auto_refresh = setInterval(
		function ()
		{
			$('#stars').load('vote.php');
		}, 5000
	);


То есть наверное при загрузке скрипта нужно сохранить в переменную текущий трек и проверять как-то в фоне не изменилась ли она и когда изменится выполнить обновление.
Заранее спасибо.

Scepticus 02.05.2012 09:51

А зачем переменную заводить? После первого вызова скрипта заполняешь значение элемента, а второй и последующие вызовы пусть сравнивают полученный от скрипта результат с тем, что хранится в элементе. Если они разные - то меняешь на новый...
Как-то так.

celeron 02.05.2012 12:27

и как такое реализовать?

Scepticus 02.05.2012 14:19

Например:
setInterval(
	function (){
	     $.get('vote.php','',function(data)
             {
	        if($('#stars').html()!=data)
		    $('#stars').html(data);
	     });
	 }, 5000
);

celeron 02.05.2012 14:51

но от заданного интервала мы же так и не избавились

micscr 02.05.2012 15:00

Цитата:

Есть php скрипт, который выводит название текущего трека track.php
а эта инфа тоже по таймеру тянется на страницу без перезагрузки?

celeron 02.05.2012 15:05

Цитата:

Сообщение от micscr (Сообщение 172379)
а эта инфа тоже по таймеру тянется на страницу без перезагрузки?

эту инфу я каждую секунду обновляю, но там не критично,

а рейтинг просто не успеешь выставить за секунду да и заметно перезагрузку.

celeron 03.05.2012 18:53

Цитата:

Сообщение от Scepticus (Сообщение 172365)
Например:
setInterval(
	function (){
	     $.get('vote.php','',function(data)
             {
	        if($('#stars').html()!=data)
		    $('#stars').html(data);
	     });
	 }, 5000
);

Скажите пожалйста что с этим сделать можно?
мне нужно чтобы проверка происходила в фоне, чтоб блок не обновлялся каждые 5 сек, а только раз в несколько минут.

Scepticus 04.05.2012 08:33

Цитата:

Сообщение от celeron (Сообщение 172376)
но от заданного интервала мы же так и не избавились

Ну есть еще вариант - по какому-либо событию на форме запрашивать сервер.
Цитата:

Сообщение от celeron (Сообщение 172568)
Скажите пожалйста что с этим сделать можно?
мне нужно чтобы проверка происходила в фоне, чтоб блок не обновлялся каждые 5 сек, а только раз в несколько минут.

А она и так в фоне происходит, по таймеру. Для другого временного промежутка укажите значение задержки в секундах*1000

celeron 04.05.2012 11:59

Цитата:

Сообщение от Scepticus (Сообщение 172621)
Ну есть еще вариант - по какому-либо событию на форме запрашивать сервер.

А она и так в фоне происходит, по таймеру. Для другого временного промежутка укажите значение задержки в секундах*1000

В этом и пробема, не знаю я промежутка этого, он не постоянный.
Проверять нужно каждую секунду, а обновить уже только когда нужно будет.


Часовой пояс GMT +3, время: 14:12.