Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Problema com AJAX em main.js , e sendemail.php , envia dados em branco em nome e email, mas envia conteudo de mensagem

Pessoal Boa Tarde !!!

Estou tendo um problema com o meu Ajax contact para enviar formulario que vai ser preenchido ao envio de mensagem , por algum motivo, não sei, só o texto da mensagem é enviada e os outros campos não são enviados, Nome e Email.

Segue o Codigo Ajax que esta dentro do main.js

/Ajax contact
var form = $(’#main-contact-form’);
form.submit(function(event){
event.preventDefault();
var name = $(“input#name”).val();
var email = $(“input#email”).val();
var subject = $(“input#subject”).val();
var message = $(“textarea#message”).val();

var form_status = $('<div class="form_status"></div>');
$.ajax({
     url: $(this).attr('action'),
        type: "POST",
        data: {
            name: name,
            email: email,
            subject: subject,
            message: message,
        },
        cache: false,

    beforeSend: function(){
        form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email enviado...</p>').fadeIn() );

    }
}).done(function(data){
    form_status.html('<p class="text-success"> Obrigado pela consulta, em breve entraremos em contato !!!</p>').delay(3000).fadeOut();
         //clear all fields
        $('#main-contact-form').trigger("reset");
});

Abaixo segue o codigo PHP sendemail

<?php
    header('Content-type: application/json');
    $status = array(
        'type'=>'success',
        'message'=>'Email enviado com sucesso!'
    );

    $name = @trim(stripslashes($_POST['name'])); 
    $email = @trim(stripslashes($_POST['email'])); 
    $subject = @trim(stripslashes($_POST['subject'])); 
    $message = @trim(stripslashes($_POST['message'])); 

    $email_from = $email;
    $email_to = 'suporte@buildersite.com.br';

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

    echo json_encode($status);
    die;  

Se alguém estiver entendo e pudar dar uma explicação, eu agradeço.

6 respostas

Fala Marcio, beleza?

Pode colocar o código do teu form aqui?

Boa Noite, Leonardo !!! Segue o form , se puder me ajudar já agradeço desde já ;)

<section id="contact">
        <div class="container">
            <div class="box last">
                <div class="row">
                    <div class="col-sm-6">
                        <h1>Fale com a gente </h1>
                        <p>Estamos a ouvir atenciosamente e entender a visão do cliente, em todos os seus aspectos.</p>
                        <div class="status alert alert-success" style="display: none"></div>
                        <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
                            <div class="row">
                                <div class="col-sm-6">
                                    <div class="form-group">
                                        <input type="text" class="form-control" required="required" placeholder="Name">
                                    </div>
                                </div>
                                <div class="col-sm-6">
                                    <div class="form-group">
                                        <input type="text" class="form-control" required="required" placeholder="Email address">
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-sm-12">
                                    <div class="form-group">
                                        <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Message"></textarea>
                                    </div>
                                    <div class="form-group">
                                        <button type="submit" class="btn btn-danger btn-lg">Enviar Mensagem</button>
                                    </div>
                                </div>
                            </div>
                        </form>

Fala Marcio, beleza?

Então o erro é porque nos seus inputs de nome e e-mail não tem a tag id e lá no seu jQuery você busca os campos pela tag id daí como não existe ele não recupera o valor do campo.

TMJ, bons estudos.

Boa Noite, Leonardo !!!!

- Obrigado por responder, vou verificar e tentarei corrigir...

Valeu !!!! ;)

solução

"Então o erro é porque nos seus inputs de nome e e-mail não tem a tag id e lá no seu jQuery"

Leandro você tinha razão em relação ao id , mas eles estavam faltando era no forms, então eu coloquei e ele funcionou o texto veio, gostaria de agracer a observação feita.

Até a proxima, Abraços !!!

Tranquilo, precisando só postar a dúvida ai no forum que a gente se esbarra...rs