Array
(
)

Formulário PHP e Ajax.

PHP
Gummrpl
   - 19 jan 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.

William (devwilliam)
   - 19 jan 2015

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

Ronaldo Lanhellas
   - 19 jan 2015


Citação:
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 ?

Gummrpl
   - 19 jan 2015

contato.php

#Código

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

#Código
<?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
?>

Ronaldo Lanhellas
   - 19 jan 2015

E o erro ?

Gummrpl
   - 19 jan 2015


Citação:
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.

Ronaldo Lanhellas
   - 19 jan 2015

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

Ronaldo Lanhellas
   - 19 jan 2015

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

Gummrpl
   - 19 jan 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 ?

Citação:
$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>";

Ronaldo Lanhellas
   - 19 jan 2015


Citação:
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 ?

Citação:
$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.

Ronaldo Lanhellas
   - 19 jan 2015


Citação:
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 ?

Citação:
$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.

Gummrpl
   - 19 jan 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.

Ronaldo Lanhellas
   - 19 jan 2015


Citação:
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;

William (devwilliam)
   - 19 jan 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.

Gummrpl
   - 20 jan 2015

Hum... Entendi. Bom de qualquer forma esse foi o erro que imprimiu no console do Chrome.

Citação:
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)