Iniciar função atráves do onClick

28/07/2017

0

Boa Tarde Amigos.
Minha questão é o seguinte, possuo um script que fica lendo um .log basicamente em tempo real e o mostra em tela, mas a questão é que ele inicia com o DOM, gostaria que ele iniciasse apenas a partir do click no botão, poderiam me ajudar ??

<?php
if (isset($_GET['ajax'])) {
	$sessionID = 'log'.$_GET['s'];
	session_id($sessionID);
	session_start();
	$handle = fopen('/\\\\\\\\\\\\\\\\cordas\\\\\\\\instance-8480\\\\\\\\log\\\\\\\\server.log', 'r');
		if (isset($_SESSION['offset'])) {
			$data = stream_get_contents($handle, -1, $_SESSION['offset']);
			echo nl2br($data);
		} else {
			fseek($handle, 0, SEEK_END);
		} 
		
		$_SESSION['offset'] = ftell($handle);
		exit();
	}

	$randomSession = rand();
?>

$(document).ready(function( ) {
	$('.log-btn').on("click", function()) {
		$.repeat(1000, function() {
			$.get('automacao_tela.php?ajax&s=<?=$randomSession;?>', function(data) {
				$('#tail').append(data);
			});
		});
	}); 
	
<form action="?automacao=ok" method="POST">
<button type="submit" class="log-btn" id="iniciar" >INICIAR PROCESSO</button>
</form>
Matheus Delre

Matheus Delre

Responder

Posts

04/08/2017

Fernando Gaspar

Fala Matheus beleza brother?

O código acima é o mesmo que você esta testando, caso seja, inserira as tags <script> e </script> no inicio e no final do código.
Outra coisa que pode fazer para verificar o comportamento é abaixo da função é comentar o código que realiza a execução e inserir um console.log('teste'); ao analisar no inspecionador de elementos na aba console o mesmo só deve escrever a mensagem 'teste' com clicar no botão "INICIAR PROCESSO".

Outra coisa que percebi, é que quando você clica no botão o evento de submit é disparado, você vai precisar criar o evento prevent.default e alguns fechamentos de tag estão fora de ordem.

segue a sugestão de código:
$(document).ready(function() {
	$('.log-btn').on("click", function(e) {
		e.preventDefault();
		$.repeat(1000, function() {
			$.get('automacao_tela.php?ajax&s=<?=$randomSession;?>', function(data) {
				$('#tail').append(data);
			});
		});
	});
});


Depois posta aí o que rolou, abraços!
Responder

04/08/2017

Fabio Rocha

Matheus,

Como vai, para voce criar um uma ação que fique se repetindo você pode utilizar o setInterval do JavaScript, segue código abaixo de exemplo.

<button type="button" class="log-btn" id="iniciar" >INICIAR PROCESSO</button>

<script> 
    $(document).ready( function( ) {
        $('.log-btn').on("click", function(){
            setInterval(function(){

                $.get( "automacao_tela.php?ajax", function( data ) {
                    $('#tail').append(data);
                });

            }, 3000);
        });
    });
</script>


Este código vai ser acionado quano o botao for clicado, outra coisa quando for fazer uma solicitação Ajax de preferencia em ler estas informações de um arquivo isolado que somente vai retornar o que você quer em vez de colocar tudo no mesmo código.

Exemplo: pagina_parasolicitar.php, pagina_automacao_tela.php

Grande Abraço
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar