Seguinte, estou com uma dúvida que pra muitos irá parecer coisa fácil de fazer!
Inclusive procurei no fórum por algo parecido, mas ñ achei nd q se assemelhe a minha dúvida.
Eu tenho um formulario no qual envia um email, quero que tudo rode somente nesta página, que não chame outra página php e que na hora de enviar a mesma carrega um pre-loader e depois diga se foi enviado com sucesso ou não, tudo isso sem carregar o restante da página só aparecendo no lugar do form uma div com o resultado.
Vou postar partes da minha página.
<script type="text/javascript" language="javascript"> function openAjax() { var endereco; var ajax; try{ ajax = new XMLHttpRequest(); }catch(ee){ try{ ajax = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ ajax = new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ ajax = false; } } } return ajax; } function mostraResultado(enviado) { var exibeResultado = document.getElementByID('resultado'); var ajax = new openAjax(); ajax.open('GET',"contato.php",true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); ajax.setRequestHeader("Pragma", "no-cache"); ajax.onreadystatechance = function () { if(ajax.readyState == 2 || ajax.readyState == 3) { exibeResultado.innerHTML = "<div id='carregando'><img src='images/loading.gif' alt='Carregando' /><strong>Loading...</strong></div>"; } else { if(ajax.readyState == 4) { if(ajax.status == 200) { var resultado = document.formulario.enviado; if(resultado==1) { exibeResultado.innerHTML = "Mensagem enviada com sucesso!"; } else { exibeResultado.innerHTML = "Ocorreu um erro. Tente novamente mais tarde!"; } } else { exibeResultado.innerHTML = "Ocorreu um erro. Tente novamente mais tarde. "; } } } } } </script>E a parte do php:
<?php $destino = "raul.lima@cosmotec.com.br"; $empresa = $_POST['empresa']; $responsavel = $_POST['responsavel']; $endereco = $_POST['endereco']; $cidade = $_POST['cidade']; $telefone = $_POST['telefone']; $mail = $_POST['mail']; $conteudo = $_POST['mensagem']; $headers.="From:".$mail.""; $mail = str_replace(' ','',$mail); $mail = str_replace('/','',$mail); $mail = str_replace('@.','@',$mail); $mail = str_replace('.@','@',$mail); $mail = str_replace(',','.',$mail); $mail = str_replace(';','.',$mail); if($responsavel=="") { echo "Digite o nome do Responsável!"; } else if($telefone=="" && $mail=="") { echo "Informe pelo menos uma forma de contato, e-mail ou telefone!"; } else if($telefone!="") { $mensagem = "Mensagem: $conteudo\n\n"; $mensagem .= "Responsável: $responsavel\n"; $mensagem .= "Empresa: $empresa\n\n"; $mensagem .= "E-mail: $mail\n"; $mensagem .= "Telefone: $telefone\n"; $mensagem .= "Endereço: $endereco\n"; $mensagem .= "Cidade: $cidade"; $enviado = 0; mail("$destino","Mensagem Linha Animais","$mensagem","$headers"); $enviado = 1; } else if(strlen($mail)<8 || substr_count($mail,"@")!=1 || substr_count($mail, ".")==0) { echo "O e-mail digitado é inválido!"; } else { $mensagem = "Mensagem: $conteudo\n\n"; $mensagem .= "Responsável: $responsavel\n"; $mensagem .= "Empresa: $empresa\n\n"; $mensagem .= "E-mail: $mail\n"; $mensagem .= "Telefone: $telefone\n"; $mensagem .= "Endereço: $endereco\n"; $mensagem .= "Cidade: $cidade"; mail("$destino","Mensagem Linha Animais","$mensagem","$headers"); $enviado = 1; } ?>A parte do form está assim:
<form id="formulario" method="post" onsubmit="mostrarResultado();">
Com uma div acima <div id='resultado'></div>
Eu creio estar fazendo muito errado, e gostaria que me dessem uma dica.
Vlw!!!
Ninguém???