Форма начальной загрузки не загружает сообщение через AJAX и вместо этого показывает сообщение об успехе PHP на другой странице - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть форма начальной загрузки, которая при отправке выводит меня на другую страницу, показывающую сообщение об успехе, сгенерированное сценарием PHP, вместо отправки и добавления сообщения в соответствующий div в моей контактной форме через AJAX.

Моя контактная форма:

    <form class="text-left" id="ajax-contact" name="contact-form" 
    role="form" method="post" action="mailer.php">
      <div class="form-group">
        <label for="name" class="text-white">Name</label>
        <textarea class="form-control" name="name" id="name" rows="1" 
        placeholder="Enter your name" required="required" data-error="Please 
        enter your name."></textarea>
      </div>
      <div class="form-group">
        <label for="email" class="text-white">Email address</label>
        <input type="email" class="form-control"  name="email" id="email" 
        placeholder="name@example.com" required="required" data- 
        error="Please enter a valid email.">
      </div>
      <div class="form-group">
        <label for="message" class="text-white">Message</label>
        <textarea class="form-control" name="message" id="message" rows="5" 
        placeholder="Write you message..." required="required" data- 
        error="Please enter your message."></textarea>
      </div>
      <p id="submit-wrapper"><button type="submit" class="btn" id="submit- 
      btn">Submit</button></p>
    </form>

Мой javascript:

    $(function() {

  var form = $('#ajax-contact');


  var formMessages = $('#form-messages');


    $(form).submit(function(event) {

        event.preventDefault();


        var formData = $(form).serialize();


        $.ajax({
          type: 'POST',
          url: $(form).attr('action'),
          data: formData,
          dataType: 'json'
          }).done(function(response) {

          $(formMessages).removeClass('error');
          $(formMessages).addClass('success');


          $(formMessages).text(response);


          $('#name').val('');
          $('#email').val('');
          $('#message').val('');
          })

          .fail(function(data) {
          $(formMessages).removeClass('success');
          $(formMessages).addClass('error');

          if (data.responseText !== '') {
            $(formMessages).text(data.responseText);
          } else {
            $(formMessages).text('Oops! An error occured and your message could not be sent.');
          };
      });
   });
});

Мой PHP-скрипт:

   <?php


    if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $name = strip_tags(trim($_POST["name"]));
    $name = str_replace(array("\r","\n"),array(" "," "),$name);
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
    $message = trim($_POST["message"]);


    if (empty($name) OR empty($message) OR !filter_var($email, 
    FILTER_VALIDATE_EMAIL)) {

        http_response_code(400);
        echo "Oops! There was a problem with your submission. Please 
    complete the form and try again.";
        exit;
    }

    $recipient = "name@example.com";


    $subject = "New contact from $name";


    $email_content = "Name: $name\n";
    $email_content .= "Email: $email\n\n";
    $email_content .= "Message:\n$message\n";


    $email_headers = "From: $name <$email>";


    if (mail($recipient, $subject, $email_content, $email_headers)) {

        http_response_code(200);
        echo "Thank You! Your message has been sent.";
    } else {

        http_response_code(500);
        echo "Oops! Something went wrong and we couldn't send your 
    message.";
    }

    } else {

    http_response_code(403);
    echo "There was a problem with your submission, please try again.";
    }

    ?>

Я искал везде, ноне могу за всю жизнь выяснить, почему это не работает.Электронная почта также не отправляется на мой почтовый ящик (в этом примере я редактировал электронную почту, код, который я использую, содержит мой реальный адрес электронной почты).

Пожалуйста, помогите!Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...