Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sambuka

script para de funcionar quando chamo a pagina por ajax.

Recommended Posts

Boa tarde galera!

Estou com um problema bem chatinho.

Tenho um script que funciona perfeitamente, porém quando chamo ela por ajax, ela deixa de funcionar.

 

Na linha 111 do arquivo php eu chamo o script que não funciona quando chamado pelo script que chama nova pagina.

 

primeiro codigo é o ajax.

segundo é o php.

terceiro é o script que para de funcionar

 

ate utilizei isso para ver se funcionava, ms não deu jeito.

 

$("#basepaginas").find("script").each(function(i) {

eval($(this).text());
});

 

Qualquer coisa é só perguntar, por favor se alguém souber de algo me ajude....desde segunda feira ja mexendo nesse código..e sempre aparece um erro novo kkkkk.

 

 

script que chama a nova pagina: esse é o ajax.

<link href="../css/paginacao.css" rel="stylesheet">
<script src="../js/jquery-2.1.1.js" type="text/javascript"></script> 
<script type="text/javascript">
$(function() {	
	$('.buscapagina').on("click",function() {
	var last_msg_id = $(this).attr("id");
		if(last_msg_id!='end'){			
			$.ajax({
				type: "POST",
				url: "consulta/busca_paginacao.php?grupo=<?php echo $codigogrupo?>&nomegrupo=<?php echo $nomegrupo?>",
				data: "lastmsg="+ last_msg_id, 				
				beforeSend:  function() {
					$('.buscapagina').append('carregando!.....');				  
				},
				success: function(html){
					$("#paginas").remove();
					$("#basepaginas").append(html);
					$("#basepaginas").find("script").each(function(i) {
						eval($(this).text());
					});
				}
			});  
		}
		return false;
	});
});
</script>
<div id="basepaginas">
    <?php
	//seleciona as primeiras 9 postagens do grupo, porem nao imprime, pois elas ja foram chamadas pelo sistema de atualização.
    $buscapost=$linkbd->prepare("select * from postagem where grucodigo =:codgru ORDER BY posdthr DESC LIMIT 12");
    $buscapost->bindValue(":codgru",$codigogrupo);
    $buscapost->execute();	
    if($buscapost->rowCount() > 0){
        for ($i=0; $listapost = $buscapost->fetch(); $i++) {
            $id=$listapost['poscodigo'];
        }
    }else{
    }

if($buscapost->rowCount() == 12){?>
<div id="paginas">
    <a id="<?php echo $id?>" href="#" class="buscapagina" >Mostrar mais</a>
</div>
<?php
}else{
}?>
</div>

pagina php, essa é a pagina que contem o script, que deixa de funcionar quando chamado pelo ajax. linha 111

<script src="../js/jquery-2.1.1.js" type="text/javascript"></script> 
<script src="../js/lertudo_postagem.js" type="text/javascript"></script> 
<link href="../css/buscapostagem.css" rel="stylesheet">
<link href="../css/paginacao.css" rel="stylesheet">
<script type="text/javascript">
$(function() {	
	$('.buscapagina').on("click",function() {
	var last_msg_id = $(this).attr("id");
		if(last_msg_id!='end'){			
			$.ajax({
				type: "POST",
				url: "consulta/busca_paginacao.php?grupo=<?php echo $_GET['grupo']?>",
				data: "lastmsg="+ last_msg_id, 				
				beforeSend:  function() {
					$('.buscapagina').append('carregando!.....');				  
				},
				success: function(html){
					$("#paginas").remove();
					$("#basepaginas").append(html);
					$("#basepaginas").find("script").each(function(i) {
						eval($(this).text());
					});
				}
			});  
		}
		return false;
	});
});
</script>
<script type="text/javascript" language="javascript">
//funcao que efetua cadastro da postagem sem recarregar a pagina
  
$(document).ready(function(){
	$(".btcoment").on('click',function(){
		var $parentcom = $(this).parents('#formcoment');// Quando o formulário for enviado, essa função é chamada
		// Colocamos os valores de cada campo em uma váriavel para facilitar a manipulação
		var grucodcoment = $("#grucodcoment",$parentcom).val();
		var postcomcodigo = $("#postcomcodigo",$parentcom).val();
		var criacoment = $("#criacoment",$parentcom).val();		
		$.post('cadastro/proc_comentario.php', {grucodcoment: grucodcoment, criacoment: criacoment, postcomcodigo: postcomcodigo}, function(resposta) {
		});
		$("#criacoment",$parentcom).val("");
		$.get('consulta/busca_comentario_fixo.php',{truecoment:'ok', grupo:grucodcoment, postagem:postcomcodigo},function(respcom) {
			$("#"+postcomcodigo).html(respcom);
		});			
	});
});
</script>	
<?php
session_start();
include '../banco/conexao.php';
include 'busca_grupo.php';
$codigogrupo=$_GET['grupo'];
//verifica ultima postagem da ultima seleção., e faz o select apartir da mesma.
if(isset($_POST['lastmsg']) &&is_numeric($_POST['lastmsg']))
{
$lastmsg=$_POST['lastmsg'];
$buscapostpg=$linkbd->prepare("select * from postagem where grucodigo =:codgru and poscodigo <:ultimo ORDER BY posdthr DESC LIMIT 12");
$buscapostpg->bindValue(":codgru",$codigogrupo);
$buscapostpg->bindValue(":ultimo",$lastmsg);
$buscapostpg->execute();	
?><div id="basepaginasb"><?php
	for ($i=0; $listapost = $buscapostpg->fetch(); $i++) {
		$id=$listapost['poscodigo'];
		$horpos = strtotime($listapost['posdthr']);
		$datpos = date("d-m-Y H:i:s", $horpos);		
		$bscusupos=$linkbd->prepare("select usuid from usuario where usucodigo =:codusu");
		$bscusupos->bindValue(":codusu",$listapost['usucodigo']);
		$bscusupos->execute();
		$nomusupos = $bscusupos->fetch();
		?>
		<section id="postagem">
			<div id="infusupos">
				<div id="imgusupos">
				</div>
				<div id="desusupos">
					<div id="spannome">
					<?php
						echo $nomusupos['usuid'];//nome do usuario que postou
					?>
					</div>
					<div id="spandthr">
					<?php
						echo $datpos;//data e horario da postagem
					?>
					</div>
				</div>
			</div>
			<div id="descpost">
				<?php 
				$linhas=substr_count($listapost['posdescri'], '<p>');
				if((strlen($listapost['posdescri'])) < 1395 && $linhas < 15){ //se postagem for maior que 1395 caracteres ou 15 linhas aparece o botão ler tudo, e tamanho fixo para div?>
					<div class="postajustavel">
				<?php 
				}else{?>                  
					<div id="conteudopost" class="postfixo">
					<p class="cfgopc veropc">Ler tudo</p>
					<p class="cfgopc invopc">Encolher</p>
				<?php 
				}?>
				</br>
				<?php						
				echo $listapost['posdescri'];//lista as postagem do grupo
				?>
				</br>
				</div>
			</div>
			<div id="imgpost">
			</div>
		</section>
		<?php include '../js/longPolling_comentario.php';//insere os sistema de atualização automatica dos comentarios ?>
        <section id="pegainfomouse" class="pegainfomouse">            
            <section id="basecomentario" class="base<?php echo $listapost['poscodigo'];?>"> 
                <input type="hidden" class="identificapost" value="<?php echo $listapost['poscodigo'];?>" >
                <span class="titcoments">Comentários</span>                       
                <section id="<?php echo $listapost['poscodigo'];?>" class="baseinfcoment">                                  
                <?php
                    include '../consulta/busca_comentario_fixo.php';
                ?> 
                </section>                   
            </section>
        </section>
        <section id="baseefetuacoment">	
            <?php
            if($membrogrupo!='nulo'){
                include '../conectado/comentario.php';// comentarios efetuados na postagem	
            }else{}
            ?>
        </section>
        <?php				
	}
?></div><?php
    if($buscapostpg->rowCount()==12){
		?>
		<div id="paginas">
		<a id="<?php echo $id?>" href="#" class="buscapagina" >Mostrar mais</a>
		</div>
		<?php
    }else {
		?>    
      <div id="paginas">
      <a id="end" href="#" class="buscapagina" >Não existem mais postagens!</a>
      </div>';
      <?php        
    } 

}

script que é chamado na pagina php, que para de funcionar.

<script type="text/javascript">
//Variavel usada dentro da funcao "busca_automatica()", para que o botao "busca_ajax automática" chame a funcao "busca_automatica()" apenas uma vez.
$(function() {			
	$('.base<?php echo $listapost['poscodigo'];?>').on("mouseleave",function(){		
		var $idpostcod = $(this).parents('.pegainfomouse');
		var codpostiden = $(".identificapost",$idpostcod).val();		
		var bloqueio_coment= 0; 
		if(bloqueio_coment == 0){
			 //Verifica se a variavel esta com o valor original, evitando que o comando "window.setInterval" seja chamado mais de uma vez.
			window.setInterval(buscar_auxiliar_coment(codpostiden), 25000); //Funçao ativada automaticamente de tempo em tempo.
			bloqueio_coment = 1; //Muda o valor da variavel, impedindo que o "if" deixe executar novamente o comando "window.setInterval".
	
		}
	});
});
$(function() {			
	$('.base<?php echo $listapost['poscodigo'];?>').on("mouseenter",function(){			
		var bloqueio_coment= 1; 
	});
});

var permicao_coment = 1; //Variavel que indicara a permicao da funcao "buscar_auxiliar()"    
//Funcao que chamara o arquivo "buscar.php" para varrer o banco
//------------------------------------------------------------------------------------
function buscar_auxiliar_coment(valorcod){ 
	//Funcao auxiliar que serve para chamar a funcao "buscar(binario)", mas impedindo que a mesma seja chamada novamente antes de realizar o pedido de busca anterior.
    if(permicao_coment != 0){				
		//Verifica se tem permicao para chamar a funcao "buscar(binario)" (para nao chamar a outra funcao antes que a mesma termine as buscas).
        permicao_coment = 0; //Altera a variavel "permicao" para que este "if" não permita que a funcao "buscar(binario)" não seja chamada antes do tempo.
        buscarcoment(valorcod); //Chama a funcao "buscar(binario)".
		
    }
}

//------------------------------------------------------------------------------------
function buscarcoment(binario){
    var busca_ajax;
 
 
    //Verificao navegador
    if(window.XMLHttpRequest) {
        busca_ajax = new XMLHttpRequest();
    }
    
    else if(window.ActiveXObject) {
        busca_ajax = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // Arquivo PHP juntamente com o valor digitado no campo, e a função "escape()" converte os caracteres especiais em hexadecimal iniciado por "%".
    var url = "consulta/busca_comentario.php?ticket=<?php echo $ticketreal?>&verifica=ok&grupo=<?php echo $codigogrupo?>&pageativa=<?php echo $_GET['idpagegru']?>&nomegrupo=<?php echo $nomegrupo ?>&poscodigo="+binario;
    
    // Chamada do metodo open e envia os dados para o arquivo buscar.php.
    busca_ajax.open("Get", url, true);

    // Quando o objeto recebe o retorno, chamamos a seguinte função;
    busca_ajax.onreadystatechange = function(){

        //Aguarda o ajax executar
        if(busca_ajax.readyState == 4 && busca_ajax.status == 200) {

            //Resposta retornada pelo "buscar.php" via "echo"
            var resposta_coment = busca_ajax.responseText;
            
            //Verifica se e um conteudo vazio.
            if(resposta_coment != "" && !(resposta_coment.match(/^\s+$/))){			
				
                //Criamos uma "div" com o conteudo encontrado dentro e colocamos tudo dentro da tag "p".
				$("#"+binario).html(resposta_coment);
                $("#"+binario).find("script").each(function(i) {
                    eval($(this).text());
                });
                permicao_coment = 1; //Coloca 1 para que a função "buscar_auxiliar()" consiga chamar novamente esta função ("buscar(binario)").
            }
                
            else{
                permicao_coment = 1; //Caso algo de errado no "if" coloca a permicao para "1", permitindo outra busca nesta funcao ("buscar(binario)") chamada pela função "buscar_auxiliar()"
            }
            
            busca_ajax.send(null); //Limpa a variavel para que possa ser novamente criado na proxima execucao
        }    
    }    
    busca_ajax.send(null); //Limpa a variavel para que possa ser novamente criado na proxima execucao    
}



</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não traga tags scripts via ajax. Já deixe elas prontas na página mãe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não traga tags scripts via ajax. Já deixe elas prontas na página mãe.

como eu faço pra deixar essa tags prontas ?

 

to fazendo burrice aqui acho..

kkkkkk

 

tenho a div que vou jogar o conteudo do ajax dentro.

 

<div id"conteudoajax">

 

</div>

 

 

como eu faço pra deixar essa tags prontas ?

 

to fazendo burrice aqui acho..

kkkkkk

 

tenho a div que vou jogar o conteudo do ajax dentro.

 

<div id"conteudoajax">

 

</div>

Não traga tags scripts via ajax. Já deixe elas prontas na página mãe.

Bruno tentei varios coisas aqui e nada....peguei o script e coloquei na pagina principal, porém o script nao reconhece as tags do arquivo que veio pelo ajax...como faço pra ele reconhecer ?

 

 

teve isso que eu notei...

ta certo isso ? é assim mesmo ?

 

com ajax:

https://imageshack.com/i/kpoLCRXsp

 

sem ajax

https://imageshack.com/i/eyRdqN99p

Compartilhar este post


Link para o post
Compartilhar em outros sites

teve isso que eu notei...

ta certo isso ? é assim mesmo ?

 

com ajax:

https://imageshack.com/i/kpoLCRXsp

 

sem ajax

https://imageshack.com/i/eyRdqN99p

Realmente o erro era nesse trecho das imagens, desconfiei disso por que tinham outros scripts que funcionavam e apenas esse não ia, resumindo..qual era o problema ?

 

o echo do php que estava dentro do script bugava quando chamado por ajax, apenas o echo dentro do script...e gerava um código muito louco...

No fim esses echo eu coloquei em um input, e do input joguei pra um var no script e o var eu joguei no link....prontinho funcionou lindamente...Sou iniciante..então faço bastante burrada..mas no fim acabo arrumando kkkk..vlw :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.