Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2012, 19:29
Аспирант
Отправить личное сообщение для Serjuk Посмотреть профиль Найти все сообщения от Serjuk
 
Регистрация: 23.03.2012
Сообщений: 33

Как остановить выполнение яваскрипта ?
Здравствуйте, возник вопросик :
У меня при открытии страницы начинает выполняться javascript, таким образом:
<script type="text/javascript">
getPOST();
function getPOST () {
....
}
Причем функция getPOST посылает на сервер каждую секунду запрос.
</script>
Также на странице находится кнопка - по нажатию на кнопку должно произойти следующее:
1. Остановится выполнение скрипта. (getPOST) .
2. Выполнить свое действие.
Меня интересует как остановить выполнение скрипта.
Помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 09.06.2012, 19:31
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,597

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2012, 19:36
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

В общем случае - никак.
Надо смотреть конкретный код.
С учетом того, что запрос выполянется каждую секунду, может поможет такой код:
for(var i = 0; i <= setTimeout(function(){},0); i++) {
    clearTimeout(i);
}
for(var i = 0; i <= setInterval(function(){},0); i++) {
    clearInterval(i);
}

Но, во-первых такой код остановит абсолютно все скрипты, которые в данный момент регулярно выполняются.
То есть анимации, например также будут остановлены
Во-вторых надо проверить кроссбраузерность. Оставляю эту задачу Вам
Ответить с цитированием
  #4 (permalink)  
Старый 13.06.2012, 22:31
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Serjuk,

<script type="text/javascript">
function getPOST () {
....
}
var aaa = setInterval(getPOST, 1000);
document.getElementById("id кнопки").onclick = function() {
clearInterval(aaa);
Выполнить своё действие.
}
</script>

clearInterval() не прервёт текушее выполение функции getPOST в том месте, где она выполняется. clearInterval() отменит следующий очередной запуск функции getPOST.

Последний раз редактировалось ILL-JAH, 13.06.2012 в 22:35.
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2012, 13:30
Аспирант
Отправить личное сообщение для Serjuk Посмотреть профиль Найти все сообщения от Serjuk
 
Регистрация: 23.03.2012
Сообщений: 33

ILL-JAH,
Спасибо, попробовал, но почему то не останавливает..Как идет так и идет.
я сделал так:
Код:
...
var status = setInterval(getPOST, 1000);
document.getElementById("stop").onclick = function() {
clearInterval(status);
}
function getPOST () {
....
}
По нажатию на надпись
Код:
<a class="border" href="#" id="stop">Остановить</a></p>
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2012, 14:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Serjuk,
<script>
var status = setInterval(getPOST, 2000);
document.getElementById("stop").onclick = function() {
clearInterval(status);
}
function getPOST () {
 alert("getPOST")
}
</script>
<a class="border" href="#" onclick="clearInterval(status);return false">Остановить</a>
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2012, 15:12
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

запросы можно останавливать через их собственный метод abort(), но для этого нужно иметь ссылку на запрос.

var a = $.get('//javascript.ru/', function(data) { console.info('recieved data'); });

a.abort();
Ответить с цитированием
  #8 (permalink)  
Старый 16.06.2012, 18:53
Аспирант
Отправить личное сообщение для Serjuk Посмотреть профиль Найти все сообщения от Serjuk
 
Регистрация: 23.03.2012
Сообщений: 33

Deff,Почему то никак не реагирует на нажатие на "Остановить". Хотя сделал аналогично.
Ответить с цитированием
  #9 (permalink)  
Старый 16.06.2012, 19:36
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>abort action</title>
</head>

<body>
    <div>
        <p id="p1">0</p>
        <input id="but1" type="button" value="остановить счётчик"/>
    </div>
    <script type="text/javascript">
        var a = 1;
        function getPOST() {
            document.getElementById("p1").innerHTML = a++;
        }
        var aaa = setInterval(getPOST, 1000);
        document.getElementById("but1").onclick = function () {
            clearInterval(aaa);
            alert("Всё работает! Не надо ля-ля!!!");
        }
</script>
</body>
</html>

Последний раз редактировалось ILL-JAH, 16.06.2012 в 19:39.
Ответить с цитированием
  #10 (permalink)  
Старый 16.06.2012, 20:54
Аспирант
Отправить личное сообщение для Serjuk Посмотреть профиль Найти все сообщения от Serjuk
 
Регистрация: 23.03.2012
Сообщений: 33

ILL-JAH,
Не получается... Сколько не жму на кнопку - запрос все идет и идет. Вот как у меня:
Код:
<script type="text/javascript">
 getName();
  function getName () {
	var number = 0;
        var aaa = setInterval(getPOST, 1000);
        document.getElementById("but1").onclick = function () {
            clearInterval(aaa);
}

function getPOST () {
	number = number + 1;

  if (number < 60){

	$.ajax({
		type: 'POST', url: ссылка ,data:data,
		     success: function(res) {
			// какие то действия
		     } 
			});
		} 
  if ( number > 60) {
	//какие то действия
		}
	}

	}
	</script>
<input id="but1" type="button" value="Остановить"/>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как узнать, присутствует ли в окне полоса прокрутки или нет? возжаждавший Элементы интерфейса 6 12.03.2010 23:00
Как сделать электронный каталог продукции? natarius Серверные языки и технологии 6 24.05.2009 20:56
Как разрешить выполнение activeX Marcus74 Internet Explorer 2 26.02.2009 07:38
Как приостановить выполнение цикла? SashaBorandi jQuery 3 13.02.2009 08:57