Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno T.I

AJAX - Sem Refresh enviar formulario $_post

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tô vendo q você ta tentando usar variavel com escopo global.

 

precisa debugar.

Aparece algum erro no console ?

http://wbruno.com.br/blog/2011/03/31/como-debugar-javascript-firefox-erros-comuns/

 

e durante a requisição ?

http://wbruno.com.br/blog/2011/04/14/como-debugar-ajax-firebug/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal amigo, não sabia desse console de erros.

 

o erro que trouxe no console foi:

 

O método getAttributeNode() não deve mais ser usado. No lugar, use getAttribute().

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute assim, para debug:

function iniciaRequisicao(tipo,url,bool){
       ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

       ajax.open(tipo,url,bool);
       //ajax.overrideMimeType("text/XML");   /* usado somente no Mozilla */

       alert( 'dadosUsuario: '+dadosUsuario+' url: '+url );

       ajax.onreadystatechange = trataResposta;
       ajax.send(dadosUsuario);
}

informe oque retornar desse alert

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não carregou o site que estou desenvolvendo e utilizando o console trouxe este erro:

 

Erro: uncaught exception: [Exception... "Component returned failure code: 0x804b000f (NS_ERROR_IN_PROGRESS) [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x804b000f (NS_ERROR_IN_PROGRESS)" location: "JS frame :: http://localhost/ajax/php/js/bibliotecaAjax.js :: iniciaRequisicao :: line 25" data: no]

Compartilhar este post


Link para o post
Compartilhar em outros sites

como assim não carregou ?

 

poste um link para o site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo,

 

eu posso te passar as informações e senhas onde ele esta alocado por email?

O site se trata de um pequeno portfolio meu.

eu tenho você adicionado na minhas lista do MSN.

Posso te passar, pode fuçar nele a vontade... é so as variaveis $_POST que nao funciona do contato.

 

você ja me ajudou algum tempo atras e deu certo com o ajax e javascript.

 

 

abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.