Jump to content


Photo

Ajuda Formulário De Contato!


  • Faça o login para participar
4 replies to this topic

#1 Raul Lima

Raul Lima

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 27/08/2007, 15:17

Olá WM!

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

#2 silici0

silici0

    ?

  • Usuários
  • 902 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:PHP, MySQL, XHTML, CSS, AJAX, JavaScript, Objective-C, Python, Games ... #geek

Posted 27/08/2007, 18:34

Bom, primeiro AJAX é uma requisição HTTP para outra página, se nao quer que carregue outro .php você não irá usar ajax, o que vc quer é ler uma função JAVASCRIPT e enviar mail por ali dos dados da tela, o que meu caro não é possivel creio eu.

Solução? Enviar os dados por POST ou GET para um arquivo.php e ele enviar e retornar o resultado!

Vai ter que usar ajax sim...
Procurando freelancer
***********************************************
Bachelor of Technology in Technology of Information, with great knowledge in Windows operating systems and Unix-Like (BSD, Ubuntu and Slackware), languages (PHP, JavaScript and MySQL), semantic (DHTML, Tableless, Ajax, MVC, OO) and analysis (manages projects based on PMI).
Developer in PHP, JAVA, Python, Objective-c MySQL, DHTML, CSS, JAVASCRIPT, JQUERY, JSON, SMARTY, MDB2, DOCTRINE, CAKEPHP. Linux desktop for work and MacOS. E-commerces, CRM and bussiness strategys
Love-me and be FREE use UniCes-Like .

#3 Raul Lima

Raul Lima

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 28/08/2007, 17:56

Pois é, isso que quero!!!
Mas não sei ao certo como fzr.
Quando disse que não quero que carregue outra página, tipo não quero que carregue a página inteira, só onde está o form, ali ele faz a requisição e recebe a resposta em uma div.

Ninguém???

#4 sk15

sk15

    Super Veterano

  • Usuários
  • 2071 posts
  • Sexo:Masculino
  • Localidade:SP - SP

Posted 29/08/2007, 05:44

Bem olhando por alto seu problema está no AJAX ... você não esta fazendo a requirição por POST, sem contar que não está enviado os dados para a outra página no "send()", aqui:

var ajax = new openAjax();
ajax.open("POST","contato.php",true); // Nessa Parte vc deve colocar POST em vez de GET
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

..........................
 // No final do requerimento vc deve dizer quais os valores o PHP deve receber via POST
 ajax.send("campo=valor&campo=valor&campo=valor");
}
</script>

Pode ser que haja outros erros que não tenha vista mas para comecar veja esses ...

#5 Raul Lima

Raul Lima

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 29/08/2007, 15:42

Vlw sk15!
Como viu, não manjo nd de ajax ainda, rs.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq