Formulário PHP e Ajax.

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.

PHP

Gummrpl

Respostas

19/01/2015

William (devwilliam)

Essa categoria do meu blog tem muito material sobre AJAXcom PHP link http://devwilliam.blogspot.com.br/search/label/AJAX.
Responder Citar

19/01/2015

Ronaldo Lanhellas

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

19/01/2015

Gummrpl

contato.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
?>
Responder Citar

19/01/2015

Ronaldo Lanhellas

E o erro ?
Responder Citar

19/01/2015

Gummrpl

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.
Responder Citar

19/01/2015

Ronaldo Lanhellas

Bom, o ideal é usar um envio de e-mail autenticado, o mail() pode não estar conseguindo enviar o email. Use o PHPMailer.
Responder Citar

19/01/2015

Ronaldo Lanhellas

Bom, o ideal é usar um envio de e-mail autenticado, o mail() pode não estar conseguindo enviar o email. Use o PHPMailer.
Responder Citar

19/01/2015

Gummrpl

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>";
Responder Citar

19/01/2015

Ronaldo Lanhellas

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 ? [quote]$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>";
[/quote]

é possível sim enviar email do servidor local, faço isso constantemente.
Responder Citar

19/01/2015

Ronaldo Lanhellas

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 ? [quote]$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>";
[/quote]

é possível sim enviar email do servidor local, faço isso constantemente.
Responder Citar

19/01/2015

Gummrpl

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.
Responder Citar

19/01/2015

Ronaldo Lanhellas

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;
Responder Citar

19/01/2015

William (devwilliam)

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.
Responder Citar

20/01/2015

Gummrpl

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)
Responder Citar