Ir para conteúdo

Arquivado

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

Pedro0069

Seletor $(this) do jQuery não funciona!

Recommended Posts

Bom galera é o seguinte, estou aprendendo Ajax(ainda to bem noob) e pra isso estou realizando alguns exercícios simples, hoje fui tentar criar um sistema de curtidas, no ajax no parametro success eu declaro a function, coloco o paramentro com o nome de res e faço o seguinte dentro da funcao: $(this).after(" "+res), só que ele não acrescenta o resultado do código php ( página que estou chamando com ajax ) na minha index e quando faço $(".botao_curtir").after(" "+res) ele exibe o resultado, só que em todos os botões logico, o que não quero! Sabem o porque?

 

Bom as páginas são essas:

 

Index.php

<?php
	require_once("conecta.php");
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema e curtidas</title>
<!-- IMPORTAÇÕES DE ARQUIVOS CSS -->
<link rel="stylesheet" type="text/css" media="all" href="css/estilo.css" />

<!-- IMPORTAÇÕES DE ARQUIVOS JAVASCRIPT -->
<script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/funcao.js"></script>


</head>

<body>
<div id="geral">
	<?php
        $sql_postagens = mysql_query("SELECT * FROM postagens");
        while($linha = mysql_fetch_array($sql_postagens)){
			$id = $linha['id'];
            $titulo = $linha['titulo'];
            $conteudo = $linha['conteudo'];
    ?>
  	<div class="postagem">
        <h2><?php echo $titulo ?></h2>
        <p><?php echo $conteudo ?></p>
        <input type="hidden" value="<?php echo $id ?>" />
    	<span class="botao_curtir">Curtir</span>
    </div>
    <?php
        }
    ?>
</div>
</body>
</html>

Conecta.php

<?php
    $db = @mysql_connect("localhost","root","") or die("Ocorreu o seguinte erro na conecta: ".mysql_error());
    mysql_select_db("curtidas",$db) or die("Ocorreu o seguinte erro na selecao: ".mysql_error());
    mysql_set_charset("utf8",$db);
?>

reg_curtida.php ( registra as curtidas no banco de dados )

<?php
	require_once("conecta.php");
	
	$id = $_GET['id'];
	$consulta = mysql_query("SELECT quant FROM curtidas WHERE id_post='$id'");
	$cont = mysql_num_rows($consulta);
	if($cont == 0){
		$curtida = 1;
		$reg = mysql_query("INSERT INTO curtidas(id_post,quant) value('$id','$curtida')");
	}else{
		while($linha = mysql_fetch_array($consulta)){
			$quant = $linha['quant'];
			$curtida = $quant + 1;
		};
		$reg = mysql_query("UPDATE curtidas SET quant='$curtida' WHERE id_post='$id'");
	}
	
	
    $consulta = mysql_query("SELECT * FROM curtidas WHERE id_post='$id'");
	while($linha = mysql_fetch_array($consulta)){
		$quant = $linha['quant'];
	};
	echo "<span class='curtida'>".$quant."</span>";
	mysql_close($db);
?>

e funcao.js

$(function(){
	$(".botao_curtir").click(function(){
		var id = $(this).siblings("input:hidden").val();
		$.ajax({
			type: "POST",
			url: "reg_curtida.php?id="+id,
			dataType:"text",
			success: function(res){
				$(this).siblings(".curtida").remove();
				$(this).after(" "+res);
			}
		});
	});
});

Se alguém puder me ajudar ficaria muito agradecido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

GALERA JÁ RESOLVI O PROBLEMA!

 

Simplesmente guardei o valor do objeto $(this) em uma variavel e chamei ela no ajax em vez de chamar o $(this) diretamente! Segue o código da funcao.js:

$(function(){
	$(".botao_curtir").click(function(){
		var thiss = $(this);
		var id = $(this).siblings("input:hidden").val();
		$.ajax({
			type: "POST",
			url: "reg_curtida.php?id="+id,
			dataType:"text",
			success: function(res){
				thiss.siblings(".curtida").remove();
				thiss.after("     "+res);
			}
		});
	});
});

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.