Остановить AJAX запрос

256
24 сентября 2017, 01:09

Как правильно остановить данный скрипт выполнения на определенном месте, кликая на кнопку.

Использую кнопку для запуска id="button" а для остановки не работает кнопка id="button_stop"

<script language="javascript" type="text/javascript"> 
 
  var total = 100; 
 
	$(function() { 
 
		$('#button').click(function() { 
 
			$("#status_script").ajaxError(function(event, request, settings){ 
			   $(this).html('<font color="red">ошибка отправки</font>'); 
				$('#button').attr("disabled", false); 
			 }); 
			  
      $('#error_script').html(''); 
			$('#status_script').html('<b>идет обработка, ждите...</b>'); 
			$('#button').attr("disabled", "disabled"); 
			$('#button').val("Продолжить граббинг"); 
			 
			senden( $('#grabbing_ok').val() ); 
			return false; 
		}); 
		 
 
	}); 
 
function senden( startfrom ){ 
 
xhr = $.post("/script.php?user_hash={$login_hash}", { startfrom: startfrom, area: 'script_go' }, 
 
		function(data){	 
 
			if (data) { 
 
				if (data.status == "ok") { 
 
					$('#nomer').html(data.script_count); 
					$('#id').html(data.id); 
					$('#grabbing_ok').val(data.script_count); 
 
					var proc = Math.round( (100 * data.script_count) / total ); 
 
					if ( proc > 100 ) proc = 100; 
 
					$('.progress-bar').css( "width", proc + '%' ); 
 
 
			         if (data.script_count >= total)  
			         { 
			              $('#status_script').html('<font color="green">успешно завершен</font>'); 
			         } 
			         else  
			         {  
			              setTimeout("senden(" + data.script_count + ")", 1000 ); 
			         } 
 
 
				} 
 
			} 
		}, "json").fail(function(jqxhr, textStatus, errorThrown) { 
						$('#status_script').html('<font color="red">ошибка отправки</font>'); 
						$('#button').attr("disabled", false); 
						$('#error_script').html(jqxhr.responseText); 
					}); 
		 
	return false;	 
				 
} 
 
$('#button_stop').click(function() { 
 
		  $('#button').attr("disabled", false); 
		  xhr.abort(); 
		 
		return false; 
 
		}); 
 
</script>

Answer 1

Заменил

setTimeout("senden(" + data.script_count + ")", 1000 );

на

senden(data.grabber_count);

В php прописал sleep(1); // Задержка 1 секунда

После этого заработал xhr.abort();

READ ALSO
Vue.js component render и axios

Vue.js component render и axios

К примеру есть компонент

391
Ошибка в JavaScript (Uncaught Error)

Ошибка в JavaScript (Uncaught Error)

Что делать с данной ошибкой ?

441
Вопрос по созданию бота

Вопрос по созданию бота

Заинтересовалась тема ботовМожно ли на JS написать например instagram-бота? Функции спама в сообщениях не интересуют

217
Как найти код, который выполняет JS? [дубликат]

Как найти код, который выполняет JS? [дубликат]

На данный вопрос уже ответили:

231