Formulário PHP e Ajax.
Pessoal preciso de um exemplo de formulário em PHP e Ajax. Estou me batendo com um form aqui e não consigo achar o erro. Sou novo em PHP e Ajax e preciso de ajuda. Alguém pode me ajudar. Grato.
Raphael Gumm
Curtidas 0
Respostas
William
19/01/2015
Essa categoria do meu blog tem muito material sobre AJAXcom PHP link http://devwilliam.blogspot.com.br/search/label/AJAX.
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Pessoal preciso de um exemplo de formulário em PHP e Ajax. Estou me batendo com um form aqui e não consigo achar o erro. Sou novo em PHP e Ajax e preciso de ajuda. Alguém pode me ajudar. Grato.
Não seria mais fácil você postar o erro para tentarmos lhe ajudar ?
GOSTEI 0
Raphael Gumm
19/01/2015
contato.php
envia.php
//importando biblioteca Jquery <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script> //Função ao clicar no botão Enviar $(document).ready(function(){ $("#enviar").click(function(){ // pega o valor do input através do id var nome = $("#nome").val(); var email = $("#email").val(); var telefone = $("#telefone").val(); var assunto = $("#assunto").val(); var mensagem = $("#msg").val(); $.ajax({ url: 'envia.php', //caminho do arquivo a ser executado dataType: 'html', //tipo do retorno type: 'post', //metodo de envio data: nome:nome, email:email, telefone:telefone, assunto:assunto, mensagem:msg //valore que serão enviados na pagina script.php success: function(data){ $("#divResposta").html(data); //aqui retorna os dados dentro da Div. crie essa Div na pagina que vc envia os dados }, error: function(xhr,er){ //tratamento de erro } }); }); }); </script> <div class="col-sm-5"> <!-- Contact Form --> <h3>Deixe sua mensagem</h3> <div class="contact-form-wrapper"> <form class="form-horizontal" role="form" action="envia.php" method="post" id="FormFaleConosco"> <div class="form-group"> <label for="nome" class="col-sm-3 control-label"><b>Nome</b></label> <div class="col-sm-9"> <input class="form-control" type="text" name="nome" id="nome" > </div> </div> <div class="form-group"> <label for="email" class="col-sm-3 control-label"><b>E-mail</b></label> <div class="col-sm-9"> <input class="form-control" type="text" name="email" id="email"> </div> </div> <div class="form-group"> <label for="telefone" class="col-sm-3 control-label"><b>Telefone</b></label> <div class="col-sm-9"> <input class="form-control" type="text" name="telefone" id="telefone"> </div> </div> <div class="form-group"> <label for="assunto" class="col-sm-3 control-label"><b>Assunto</b></label> <div class="col-sm-9"> <input class="form-control" type="text" name="assunto" id="assunto"> </div> </div> <div class="form-group"> <label for="mensagem" class="col-sm-3 control-label"><b>Mensagem</b></label> <div class="col-sm-9"> <textarea class="form-control" rows="5" name="mensagem" id="msg"></textarea> </div> </div> <div class="form-group"> <div class="col-sm-12"> <input type="button" id="enviar" value="Enviar Dados"/> <div id="divResposta"></div> <!--o retorno do ajax deve aparecer dentro dessa DIV --> </div> </div> </form> </div> <!-- End Contact Info --> </div>
envia.php
<?php $nome= $_POST['nome']; $email= $_POST['email']; $fone= $_POST['telefone']; $assunto= $_POST['assunto']; $msg= $_POST['mensagem']; $corpo = "<b>Nome: <font color=\"#90f\">" . $nome . "</font></b><br><br>\n"; $corpo .= "<b>E-Mail: <font color=\"#90f\">" . $email . "</font></b><br><br>\n"; $corpo .= "<b>Telefone: <font color=\"#90f\">" . $fone . "</font></b><br><br>\n"; $corpo .= "<b>Assunto: <font color=\"#90f\">" . $assunto . "</font></b><br><br>\n"; $corpo .= "<b>Mensagem:<br><br> <font color=\"#90f\">" . $msg . "</b></font><br><br>\n"; $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\n"; // Aqui você informa o formato e o charset do e-mail $headers .= "From: Contato - Site <" . $email . ">\n"; //$headers .= "Return-Path: <email@email.com.br>\n"; $headers .= "Return-Path: <email@email.com.br>\n"; //--------Verifica se não há nenhum erro e insere os dados--------------- //mail("email@email.com.br>","Contato -". $nome,$corpo,$headers); //envio o correio... mail("email@email.com.br>", "Contato -" . $nome, $corpo, $headers); //envio o correio... //agradece o envio $resposta = "<font color=#f90 face=Arial, sans-serif; size=4><br>Obrigado <b>$nome</b> por preencher o formulário. <br><br>Em breve entraremos em contato.</font><br><br>"; echo json_encode($resposta); // transforma em formato Json ?>
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
E o erro ?
GOSTEI 0
Raphael Gumm
19/01/2015
E o erro ?
A questão é que quando clico no botão "Enviar dados" ele não envia, é como se estivesse se ação alguma. Revisei o código várias vezes mas não achei o erro, não sei o porque dele não enviar.
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Bom, o ideal é usar um envio de e-mail autenticado, o mail() pode não estar conseguindo enviar o email. Use o PHPMailer.
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Bom, o ideal é usar um envio de e-mail autenticado, o mail() pode não estar conseguindo enviar o email. Use o PHPMailer.
GOSTEI 0
Raphael Gumm
19/01/2015
Bom estou rodando em servidor local e sei que não é possível enviar email com servidor local. Porém a mensagem de resposta não deveria aparecer mesmo assim ?
$resposta = "<font color=#f90 face=Arial, sans-serif; size=4><br>Obrigado <b>$nome</b> por preencher o formulário. <br><br>Em breve entraremos em contato.</font><br><br>";
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Bom estou rodando em servidor local e sei que não é possível enviar email com servidor local. Porém a mensagem de resposta não deveria aparecer mesmo assim ?
$resposta = "<font color=#f90 face=Arial, sans-serif; size=4><br>Obrigado <b>$nome</b> por preencher o formulário. <br><br>Em breve entraremos em contato.</font><br><br>";
é possível sim enviar email do servidor local, faço isso constantemente.
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Bom estou rodando em servidor local e sei que não é possível enviar email com servidor local. Porém a mensagem de resposta não deveria aparecer mesmo assim ?
$resposta = "<font color=#f90 face=Arial, sans-serif; size=4><br>Obrigado <b>$nome</b> por preencher o formulário. <br><br>Em breve entraremos em contato.</font><br><br>";
é possível sim enviar email do servidor local, faço isso constantemente.
GOSTEI 0
Raphael Gumm
19/01/2015
Tá ok. Porém ainda estou com o problema, parece que quando clico no botão de enviar ele nem passa pelo meu script, parece que está sem ação. Isso que não estou conseguindo entender.
GOSTEI 0
Ronaldo Lanhellas
19/01/2015
Tá ok. Porém ainda estou com o problema, parece que quando clico no botão de enviar ele nem passa pelo meu script, parece que está sem ação. Isso que não estou conseguindo entender.
Tenta ver se ocorre algum erro no console do browser, se for google chrome só apertar F12;
GOSTEI 0
William
19/01/2015
Tenha em mente que se ocorrer um erro no script envia.php não será enviado o retorno, então possivelmente a função mail() pode estar disparando uma exception e matando a execução do script.
GOSTEI 0
Raphael Gumm
19/01/2015
Hum... Entendi. Bom de qualquer forma esse foi o erro que imprimiu no console do Chrome.
Uncaught SyntaxError: Unexpected token :
leaflet.js:5 Consider using 'dppx' units, as in CSS 'dpi' means dots-per-CSS-inch, not dots-per-physical-inch, so does not correspond to the actual 'dpi' of a screen. In media query expression: (min-resolution: 144dpi)
leaflet.js:5 Consider using 'dppx' units, as in CSS 'dpi' means dots-per-CSS-inch, not dots-per-physical-inch, so does not correspond to the actual 'dpi' of a screen. In media query expression: (min-resolution: 144dpi)
http://localhost/microfile/css/images/bg.png Failed to load resource: the server responded with a status of 404 (Not Found)
leaflet.js:5 Consider using 'dppx' units, as in CSS 'dpi' means dots-per-CSS-inch, not dots-per-physical-inch, so does not correspond to the actual 'dpi' of a screen. In media query expression: (min-resolution: 144dpi)
leaflet.js:5 Consider using 'dppx' units, as in CSS 'dpi' means dots-per-CSS-inch, not dots-per-physical-inch, so does not correspond to the actual 'dpi' of a screen. In media query expression: (min-resolution: 144dpi)
http://localhost/microfile/css/images/bg.png Failed to load resource: the server responded with a status of 404 (Not Found)
GOSTEI 0