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???










