Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: setInterval помогите остановить

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: правильно остановить
gefard
Отправлено: 23 Апреля, 2013 - 09:07:29
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




есть скрипт
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.     function par_site(id){
  3.         var xps = id;
  4.  xps = setInterval(function() {
  5.  xps=new XMLHttpRequest(); xps.onreadystatechange=function() {
  6.  if (xps.readyState==4 && xps.status==200)
  7.  document.getElementById('results'+id).innerHTML = xps.responseText;
  8.  }
  9.  xps.open('POST','a-ajax.php',true);
  10.  xps.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  11.  xps.send('func=par&action=2');
  12.  },2000);      
  13.   }
  14.   function par_stop(id){ clearInterval(id); alert(id);
  15.  }

и html для него в цикле
PHP:
скопировать код в буфер обмена
  1. echo "<input type='button' value='Искать' onclick='par_site(".$ress['id'].")'> <input type='button' value='Остановить' onclick='par_stop(".$ress['id'].")'>";
  2. echo "<div id='results".$ress['id']."'></div>";

Суть работы скрипта
при запуске onclick='par_site(".$ress['id'].")' аякс отправляет запросы серверу и обновляет необходимый <div id='results".$ress['id']."'>
Соответсвенно кнопка остановки 'par_stop(".$ress['id'].")' должна остановить нужный id процесса setInterval
но не выходит, останавливается не тот процесс где то со смещением id+3, на странице около 10-ка записей, повторное нажатие на нужную кнопку остановить может привести к запуску остановленных процессов или остановке группы setInterval
Ткните мордой что не так Ниндзя где накосячил?
Цитата:
Точнее останавливается процесс не для id=3, а процесс запущенный 3-й по счету

(Отредактировано автором: 23 Апреля, 2013 - 09:31:09)

 
 Top
armancho7777777 Супермодератор
Отправлено: 23 Апреля, 2013 - 09:37:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




gefard пишет:

CODE (javascript):
скопировать код в буфер обмена
  1. var xps = id;
  2. xps = setInterval(function() {
  3. xps=new XMLHttpRequest();


gefard, у Вас дефицит переменных ?

gefard пишет:
setInterval помогите остановить

var timer = setInterval(function(){/*.....*/});
clearInterval(timer); // Удаляем таймер
 
 Top
gefard
Отправлено: 23 Апреля, 2013 - 09:51:26
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




gefard пишет:
setInterval помогите остановить

var timer = setInterval(function(){/*.....*/});
clearInterval(timer); // Удаляем таймер[/quote]

а это что?
CODE (javascript):
скопировать код в буфер обмена
  1.  function par_stop(id){ clearInterval(id); alert(id);
  2.  
  3.  }

только останавливается запись не с id=3, а запись запущенная третей по счету
 
 Top
armancho7777777 Супермодератор
Отправлено: 23 Апреля, 2013 - 10:04:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




gefard пишет:
а это что?

Я не знаю.
При чём тут id, если Вы заносите таймер в переменную xps, которую следом затираете объектом XMLHttpRequest.

Как-то так:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var par_site = function(id)
  3. {
  4.        var xps = new XMLHttpRequest(),
  5.            $_this = this;
  6.        
  7.        $_this.timer = setInterval(function(){
  8.  
  9.               xps.onreadystatechange = function()
  10.               {
  11.                      if (xps.readyState==4 && xps.status==200)
  12.                      document.getElementById('results'+id).innerHTML = xps.responseText;
  13.               }
  14.                
  15.               xps.open('POST','a-ajax.php',true);
  16.               xps.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  17.               xps.send('func=par&action=2');
  18.                
  19.        }, 2000);
  20.        
  21.        $_this.par_stop = function()
  22.        {
  23.               clearInterval($_this.timer);
  24.               xps.abort();
  25.        }
  26. }
  27.  
  28. /************ ПРИМЕР  ****************************/
  29.  
  30. var id = 3,
  31.     p = new par_site(id);
  32.  
  33. p.par_stop();
  34.  
 
 Top
gefard
Отправлено: 23 Апреля, 2013 - 10:24:41
Post Id



Гость


Покинул форум
Сообщений всего: 64
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




спасибо решил
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.         var aret;
  3.  aret = setInterval(function() {
  4. },2000);       
  5.  var newAttr = document.createAttribute('onclick');
  6. newAttr.nodeValue = 'parser_stop('+aret+')';
  7. document.getElementById('but'+id).setAttributeNode(newAttr);
 
 Top
armancho7777777 Супермодератор
Отправлено: 23 Апреля, 2013 - 10:27:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




gefard, реализацию, которую я предложил выше - правильнее.
Создаёте объект для нужного id, и оперируете с ним различными методами, которые опишите в функции - конструкторе.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB