AJAX - Sem Refresh enviar formulario $_post
Bom dia,
Pessoal, agora que estou trabalhando com ajax, sem experiência. Bom, estou construindo um site,
utilizando ajax para carregar a pagina sem ter que realizar um "refresh" ou seja atualizar a pagina.
Ate ai ok, estou com problema apenas no envio de formulario utilizando php + ajax.
Onde está as variavels $recebenome = $_POST['nome']; , $recebemail = $_POST['email']; , $recebemsg = $_POST['mensagem']; do enviar.php está trazendo nenhum dado, quando clica em enviar, envia o email e os campos aparecem em branco.
As funções abaixo esta funcionando beleza! aparece todos os campos conforme declaro.
$data = date("d/m/y");
$ip = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$hora = date("H:i");
RESUMINDO:
$_POST['nome']
$_POST['emaiil']
$_POST['mensagem']
NÃO FUNCIONA, APENAS TRAS OS CAMPOS EM BRANCO. :o
O QUE EU POSSO FAZER DENTRO DO ARQUIVO DO AJAX PARA CHAMAR ESSAS VARIAVEIS CORRETAMENTE?
Alguem poderia me ajudar a declarar essas variaveis corretamente?
javascript alert funciona perfeitamente no ajax? fiquei com duvidas
Tenho que criar uma nova função para tratar?
O index.php está chamando o ajax
Abaixo o arquivo do ajax:
ar ajax;
var dadosUsuario;
// ------- cria o objeto e faz a requisição -------
function requisicaoHTTP(tipo,url,assinc){
if(window.XMLHttpRequest){ // Mozilla, Safari,...
ajax = new XMLHttpRequest();
}else if (window.ActiveXObject){ // IE
ajax = new ActiveXObject("Msxml2.XMLHTTP");
if (!ajax) {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(ajax) // iniciou com sucesso
iniciaRequisicao(tipo,url,assinc);
else
alert("Seu navegador não possui suporte a essa aplicação!");
}
// ------- Inicializa o objeto criado e envia os dados (se existirem) -------
function iniciaRequisicao(tipo,url,bool){
ajax.onreadystatechange=trataResposta;
ajax.open(tipo,url,bool);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");//ajax.overrideMimeType("text/XML"); / usado somente no Mozilla /
ajax.send(dadosUsuario);
}
// ------- Inicia requisição com envio de dados -------
function enviaDados(url){
criaQueryString();
requisicaoHTTP("POST",url,true);
}
// ------- Cria a string a ser enviada, formato campo1=valor1&campo2=valor2... -------
function criaQueryString(){
dadosUsuario="";
// var frm = document.forms[0];
var frm = document.getElementById("formAjax");
var numElementos = frm.elements.length;
for(var i = 0; i < numElementos; i++) {
if(i < numElementos-1) {
dadosUsuario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
} else {
dadosUsuario += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);
}
}
}
// ------- Trata a resposta do servidor -------
function trataResposta(){
if(ajax.readyState == 4){
if(ajax.status == 200){
trataDados(); // criar essa função no seu programa
} else {
alert("Problema na comunicação com o objeto XMLHttpRequest.");
}
}
}
Bleza, agora o formulario de envio.
<div id='texto'>
<h2>Contato <img src='imagens/ico_contato.gif'></h2>
<form name='formAjax' method='post' action=\"javascript:Site('enviar','5')\">
<b>Seu nome:<br>
<input type='text' name='nome' id='nome' size='30'><br>
Seu e-mail:<br>
<input type='text' name='email' id='email' size='30'>
<br>
Sua mensagem:
<textarea name='mensagem' id='mensagem' cols='35' rows='3' onkeyup='javascript:MostraQuantidade();'></textarea>
<div name='txtLetras' id='txtLetras'></div>
</b>
<p>
<input name='Submit' value='Enviar' type='submit' /> <input type='reset' name='reset' value='Limpar'>
</p>
</form>
</div>";
Agora o o arquivo que esta chamando o enviar atraves de javascript
<?php
$recebenome = $_POST['nome'];
$recebemail = $_POST['email'];
$recebemsg = $_POST['mensagem'];
//Funções
$data = date("d/m/y");
$ip = $_SERVER['REMOTE_ADDR'];
$navegador = $_SERVER['HTTP_USER_AGENT'];
$hora = date("H:i");
// Definindo os cabeçalhos do e-mail
$headers = 'From: TESTE@TESTE.COM;
$headers .= "\r\nContent-type:text/html; charset=iso-8859-1";
$para = "email1@xxx.com.br"
// Definindo o aspecto da mensagem
$mensagem = "<h3>De:</h3> ";
$mensagem .= $recebenome ." | " . $recebemail;
$mensagem .= "<h3>Assunto:</h3>";
$mensagem .= "Contato";
$mensagem .= "<h3>Mensagem</h3>";
$mensagem .= "<p>";
$mensagem .= $recebemsg;
$mensagem .= "</p>";
$mensagem .= "<b>Data: | </b>" .$data . "<b> | Hora: </b>" . $hora;
$mensagem .= "<b> | IP: | </b>" . $ip;
$mensagem .= "<b> | Navegador: | </b>" . $navegador . "<b> |</b>";
// Enviando a mensagem para o destinatário
$envia = mail($para,"Assunto",$mensagem,$headers);
$mensagem2 = "<p>Olá <b>" . $recebenome . "</b>, desde já agradeço pelo seu contato.</p>";
$mensagem2 .= "<br>";
$mensagem2 .= "<br>";
$mensagem2 .= "_________________________________________________________________________";
$mensagem2 .= "<p><b>Date:</b> " .$data. " <b>| Time:</b> " .$hora."</p>";
$mensagem2 .= "<br>";
$envia = mail($recebemail,"Contato - Mensagem Recebida!",$mensagem2,$headers);
header ("Location: http://www.site.com.br");
?>
Muito obrigado por tentar me ajudar!
Abraços!
Bruno.
Discussão (6)
Carregando comentários...