Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2017, 15:53
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Как проверять нет ли изменений в БД?
Здравствуйте друзья!

На странице вывожу информацию из базы данных. Но в БД могут произойти изменения, и их (обновленные данные) нужно сразу-же вывести на страницу. Делаю таким образом:
var timer_id = setTimeout(function timer_load() {
$.post( 'ajax.php', {'new_value': 'a'}, function(data){
var arr_value = data.split(',');
		
		$("#echo1").html(arr_value[1]);
		$("#echo2").val(arr_value[2]);
		$("#rangeP").val(arr_value[3]);
		.........

	});
setTimeout(timer_load, 20);
}, 20);

Так-же на странице есть "бегунок"
<input type="range" oninput="onchangeRange()" class='rangeP' id="rangeP" value="0" min="0" max="255" step="1" />

и отлавливаю события по изменению значения:
function onchangeRange() {
	clearTimeout(timer_id);
	$.post( 'ajax.php', {'new_value': $("#rangeP").val()}, function(data){});
}

данные бегунка тоже записываю в БД. Но проблема в том что когда я двигаю бегунок, то он постоянно скачет и после того как я его отпускаю, то он возвращается на прежнею позицию и медленно перебирается на позицию где он был отпущен.

Тоже самое происходит и с другими элементами когда я хочу их отредактировать. Даже не всегда срабатывает нажатие кнопки. Я так понимаю что это происходит из за постоянных запросов к БД, и перезаписи всех значений на странице.

Может кто-то решал уже подобные задачи, подскажите как сделать так чтобы данные обновлялись с минимальной задержкой, и при этом, чтобы можно было нормально редактировать данные на странице?
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2017, 17:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

oninput="onchangeRange()"

onchangeRange() ... $.post

Завалить сервер охота?
Ответить с цитированием
  #3 (permalink)  
Старый 17.09.2017, 17:35
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

setTimeout(timer_load, 20) - гораздо большее зло чем onchangeRange()
Поэтому я и обратился на этот форум, потому что не знаю каким образом реализовать вышеописанный алгоритм, чтобы не "завалить сервер" и не глючила вэб-страница. Мне нужно отслеживать БД в реальном времени (+/- 0.1 сек), при этом, также в реальном времени записывать данные в БД если на странице что-то изменилось.
Ответить с цитированием
  #4 (permalink)  
Старый 17.09.2017, 19:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от arkadii_parovozov
setTimeout(timer_load, 20) - гораздо большее зло
Если при каждом малейшем изменении и без задержки запрашивать сервер, то вы его таки завалите. Но коли задержка, то передаваться на сервер будет текущее состояние слайдера. И пака нет ответа от прежнего запроса никаких новых.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
Как не показывать страницу пользователю, у которого нет прав Shasoft Angular.js 9 24.01.2015 22:36
Мотоциклисты есть? l-liava-l Оффтопик 13 04.07.2014 13:35
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09