ajax nao passa variavel para php

PHP

06/11/2014

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

Curtidas 0

Melhor post

William

William

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>
GOSTEI 1

Mais Respostas

William

William

06/11/2014

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!
GOSTEI 0
Manja

Manja

06/11/2014

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>
GOSTEI 0
Felipe Ribeiro

Felipe Ribeiro

06/11/2014

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>
GOSTEI 0
Manja

Manja

06/11/2014

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);
GOSTEI 0
Manja

Manja

06/11/2014

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

Obrigada por eqto.
GOSTEI 0
POSTAR