При чтении формы HTML5 с использованием PHP, $ _POST не читает входные данные. $ _REQUEST сработал один раз, затем остановился - PullRequest
0 голосов
/ 29 октября 2018

HTML:

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
                <div class="row  wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
                  <div class="col-sm-6">
                    <div class="form-group">
                      <input type="text" name="name" class="form-control" placeholder="Name" required="required">
                    </div>
                  </div>
                  <div class="col-sm-6">
                    <div class="form-group">
                      <input type="email" name="email" class="form-control" placeholder="Email Address" required="required">
                    </div>
                  </div>
                </div>
                <div class="form-group">
                  <input type="tel" name="subject" class="form-control" placeholder="Phone" required="required">
                </div>
                <div class="form-group">
                  <textarea name="message" id="message" class="form-control" rows="4" placeholder="Enter your message" required="required"></textarea>
                </div>                        
                <div class="form-group">
                  <button type="submit" class="btn-submit">Send Now</button>
                </div>
              </form>

PHP:

<?php

$mail='kenhaki@gmail.com';
$nombre = $_REQUEST['name'];
$telefono = $_REQUEST['subject'];
$email = $_REQUEST['email'];
$mensaje = $_REQUEST['message'];
$headers = 'From: ccontacto@nhtt.com.mx' . "\r\n" .
    'Reply-To: cContacto@nhtt.com.mx' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

$thank="gracias.html";

$message = "
nombre15: $nombre
telefono: $telefono
email: $email
mensaje: $mensaje";

if (mail($mail,"Formulario de Contacto Nuevo",$message,$headers))
Header ("Location: $thank");

?>

JS:

// Contact form
    var form = $('#main-contact-form');
    form.submit(function(event){
        event.preventDefault();
        var form_status = $('<div class="form_status"></div>');
        $.ajax({
            url: $(this).attr('action'),
            beforeSend: function(){
                form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
            }
        }).done(function(data){
            form_status.html('<p class="text-success">Thank you for contact us. As early as possible  we will contact you</p>').delay(3000).fadeOut();
        });
    });

Я новичок, я искал похожие вопросы, ноне нашел объяснения, почему он не получит поля из HTML-формы.Я пытался использовать $ _REQUEST и $ _POST, но ни одна из них не работает.У меня такая же форма в другой части того же сайта, где он работает нормально, может быть, здесь JS как-то блокирует это?

Заранее спасибо за ваше терпение.

1 Ответ

0 голосов
/ 29 октября 2018

Вы переопределяете действие формы по умолчанию с помощью event.preventDefault().Тогда все, что делает ваш AJAX-вызов, запрашивает содержимое sendemail.php - он не отправляет на него никаких данных!

Попробуйте изменить свой код JS следующим образом:

// Contact form
var form = $('#main-contact-form');

form.submit(function(event){
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');

    $.ajax({
        url: $(this).attr('action'),
        method: 'post',
        data: $(this).serialize(),
        beforeSend: function(){
            form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
        }
    }).done(function(data){
        form_status.html('<p class="text-success">Thank you for contact us. As early as possible  we will contact you</p>').delay(3000).fadeOut();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...