ajax nao passa variavel para php

06/11/2014

0

PHP

Preciso de socorro urgente aqui.
Codigo da minha pagina principal:
<!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>Salão de Beleza – Madame Nora</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="classes/jquery-2.1.1.js" ></script>
<script type="text/javascript" src="classes/jquery-2.1.1.min.js"></script>

<script type="text/javascript">	
	$(function(){
		$("#btnDesativar").click(function(event) {	           
			var	aux = confirm('Deseja Realmente Desativar Conta?');
			if(aux == true){								
				 var acao = "1";
     			  var url = "includes/conexaoIndex.php";
     			  xmlHttp.onreadystatechange = stateChanged;
			      xmlHttp.open("POST",url,true);
        		  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		  xmlHttp.send("acao="+acao);
			}
		});		
	});		
</script>

</head>
<?php include "/includes/conexaoIndex.php"; ?>
<body>
<form id="loginUsuario" name="loginUsuario" action="" >
 <button type="submit" id="btnDesativar" name="btnDesativar" >Desativar conta</button>
 </form>
 </body>
 </html>

E na minha outra pagina, so tenho isso pra testar:
<?php

if (isset($_POST['acao']))
{ 
echo "aqui";}

?>

No meu browser fica assim: http://localhost/Pro...p?btnDesativar=

Por que nao funciona???
Manja

Manja

Responder

Post mais votado

06/11/2014

Tenta assim :

<!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>Salão de Beleza – Madame Nora</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="classes/jquery-2.1.1.js" ></script>
<script type="text/javascript" src="classes/jquery-2.1.1.min.js"></script>

<script type="text/javascript">	
	$(function(){
		$("#btnDesativar").click(function(event) {	           
			var	aux = confirm('Deseja Realmente Desativar Conta?');
			if(aux == true){								
                          $.ajax({
					url: 'includes/conexaoIndex.php"',
					type: 'POST',
					dataType: 'html',
					data: {'acao' : acao},
					success: function(retorno){
							alert(retorno);
					}
			});	
			}
		});		
	});		
</script>

</head>
<?php include "/includes/conexaoIndex.php"; ?>
<body>
<form id="loginUsuario" name="loginUsuario" action="" >
 <button type="submit" id="btnDesativar" name="btnDesativar" >Desativar conta</button>
 </form>
 </body>
 </html>

William

William
Responder

Mais Posts

06/11/2014

William

Basicamente você adicionou um evento para um botão "submit", mas esqueceu que esse tipo de input executa uma submissão de formulário e o seu form está com o method="" isso signfica que será feita uma submissão via GET (padrão quando nenhum valor é informado para o method do form). Mas a sua função AJAX está enviando a requisição via POST.

Para funcionar você deve cancelar o evento default do "submit" que é a submissão do form, adicionando "event.preventDefault();" a sua função ou "return FALSE;":

<!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>Salão de Beleza – Madame Nora</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="classes/jquery-2.1.1.js" ></script>
<script type="text/javascript" src="classes/jquery-2.1.1.min.js"></script>
 
<script type="text/javascript">   
    $(function(){
        $("#btnDesativar").click(function(event) { 
            event.preventDefault();            
            var aux = confirm('Deseja Realmente Desativar Conta?');
            if(aux == true){                                
                 var acao = "1";
                  var url = "includes/conexaoIndex.php";
                  xmlHttp.onreadystatechange = stateChanged;
                  xmlHttp.open("POST",url,true);
                  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                  xmlHttp.send("acao="+acao);
            }
        });     
    });     
</script>
 
</head>
<?php include "/includes/conexaoIndex.php"; ?>
<body>
<form id="loginUsuario" name="loginUsuario" action="" >
 <button type="submit" id="btnDesativar" name="btnDesativar" >Desativar conta</button>
 </form>
 </body>
 </html>


Uma dica, já que você está usando jQuery então utilize as funções dele para trabalhar com AJAX!
Responder

06/11/2014

Manja

Nem assim amigo....nao deu certo

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="classes/jquery-2.1.1.js" ></script>
 
<script type="text/javascript">   
    $(function(){
        $("#btnDesativar").click(function(event) { 
            event.preventDefault();            
            var aux = confirm('Deseja Realmente Desativar Conta?');
            if(aux == true){                                
                 var acao = "1";
                  var url = "includes/conexaoIndex.php";
                  xmlHttp.onreadystatechange = stateChanged;
                  xmlHttp.open("POST",url,true);
                  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                  xmlHttp.send("acao="+acao);
            }
        });     
    });     
</script>
  
</head>
<?php include "/includes/conexaoIndex.php"; ?>
<body>
<form id="loginUsuario" name="loginUsuario" action="" method="post">
 <button type="submit" id="btnDesativar" name="btnDesativar" >Desativar conta</button>
 </form>
 </body>
 </html>
Responder

06/11/2014

Felipe Ribeiro

Mesmo com a correção proposta ainda vai ficar faltando alguma coisa..

Segue o código funcional.

Espero ter ajudado.
Qualquer dúvida estamos aí.


<!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>Salão de Beleza - Madame Nora</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<script type="text/javascript" src="classes/jquery-2.1.1.js" ></script>
	<script type="text/javascript">
		$(function(){
			$("#btnDesativar").click(function(event) {
				var aux = confirm('Deseja Realmente Desativar Conta?');
				if(aux == true){
					var acao = "1";
					var url = "includes/conexaoIndex.php";
					  
					xmlHttp = new XMLHttpRequest();

					xmlHttp.open("POST",url,true);
					xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					xmlHttp.send("acao="+acao);

					xmlHttp.onreadystatechange = function() {//Chama uma função quando o estado muda
						if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
							alert(xmlHttp.responseText);
						}
					}				
				}
			});     
		});     
	</script>
</head>
<body>
	<button type="submit" id="btnDesativar" name="btnDesativar" >Desativar conta</button>
</body>
</html>
Responder

06/11/2014

Manja

Filipe, aqui deu certo graças ao seu retorno de erro achei o problema, mas agora estou com mais uma duvida.
Quando eu chamo a conexaoIndex.php, dentro dela tenho mais duas classes, uma para fazer as conexoes do banco, outra para enviar emails.
O retorno da sua funçao reclama exatamente porque nao encontra essas duas classes. Daí nao passa nem pela "acao".

Agora, como devo tratar elas, se no php sem essa funçao do ajax elas funcionam?
-coloco na primeira pagina?
-coloco dentro da funçao do ajax tb?
-se altero o caminho na conexaoIndex.php, o proprio php reclama.

include "classes/Conexao.class.php";
include "classes/class.phpmailer.php";



if (isset($_POST['acao']))
{
echo "aqui";
$acao = $_POST['acao'];

/*if ($acao == "1")
{
//INSTANCIANDO UM NOVO OBJETO DO TIPO CONEXÃO
$c = new Conexao();

//CRIANDO O COMANDO SQL
$comandosql = "update clientes set inativo = 1 ";

//REALIZANDO O COMANDO SQL
$c -> criarConsulta($comandosql);

//ATRIBUINDO O RESULTADO DO COMANDO A UMA VARIÁVEL
$resultado = $c -> criarConsulta($comandosql);
Responder

06/11/2014

Manja

[img]http://arquivo.devmedia.com.br/forum/imagem/259421-20141106-154006.jpg[/img]
Da uma olhada.

Obrigada por eqto.
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