2015-08-02 7 views
0

Я пытаюсь создать контактную форму JQuery Ajax из блога treehouse Click here Я попытался слегка изменить форму, удалив «поле сообщения». Из HTML и JSФорма jQuery AJAX, отправив сообщение об ошибке

Я получаю сообщение об ошибке после отправки своих данных в форме. Code pen link

Ниже приведен фрагмент моего кода.

HTML:

<form id="ajax-contact" class="main-contact submit-fade ajax-form" action="register.php" method="POST"> 
    <ul class="small-block-grid-2 medium-block-grid-2 hide-form"> 
     <li> 
      <label for="name">Name</label> 
      <input type="text" class="form-control" name="name" placeholder="Name" required> 
     </li> 

     <li> 
      <label for="email">Email</label> 
      <input type="text" class="form-control" name="email" placeholder="Email"> 
     </li> 
    </ul> 
    <input type="submit" class="btn btn-success"> 
</form> 

JS:

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

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

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

    // Submit the form using AJAX. 
    $.ajax({ 
     type: 'POST', 
     url: $(form).attr('action'), 
     data: formData 
    }) 
    .done(function(response) { 
     // Make sure that the formMessages div has the 'success' class. 
     $(formMessages).removeClass('error'); 
     $(formMessages).addClass('success'); 

     // Set the message text. 
     $(formMessages).text(response); 

     // Clear the form. 
     $('#name').val(''); 
     $('#email').val(''); 
     //$('#message').val(''); 
    }) 
    .fail(function(data) { 
     // Make sure that the formMessages div has the 'error' class. 
     $(formMessages).removeClass('success'); 
     $(formMessages).addClass('error'); 

     // Set the message text. 
     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") { 
     // Get the form fields and remove whitespace. 
     $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"]); 

     // Check that data was sent to the mailer. 
     if (empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      // Set a 400 (bad request) response code and exit. 
      http_response_code(400); 
      echo "Oops! There was a problem with your submission. Please complete the form and try again."; 
      exit; 
     } 

     // Set the recipient email address. 
     // FIXME: Update this to your desired email address. 
     $recipient = "[email protected]"; 

     // Set the email subject. 
     $subject = "New contact from $name"; 

     // Build the email content. 
     $email_content = "Name: $name\n"; 
     $email_content .= "Email: $email\n\n"; 
     $email_content .= "Message:\n$message\n"; 

     // Build the email headers. 
     $email_headers = "From: $name <$email>"; 

     // Send the email. 
     if (mail($recipient, $subject, $email_content, $email_headers)) { 
      // Set a 200 (okay) response code. 
      http_response_code(200); 
      echo "Thank You! Your message has been sent."; 
     } else { 
      // Set a 500 (internal server error) response code. 
      http_response_code(500); 
      echo "Oops! Something went wrong and we couldn't send your message."; 
     } 

    } else { 
     // Not a POST request, set a 403 (forbidden) response code. 
     http_response_code(403); 
     echo "There was a problem with your submission, please try again."; 
    } 

?> 
+0

Параметр 'for' атрибут на этикетках должен соответствовать' id' элемента управления он относится. Не дублируйте ярлык в 'placeholder'. – Quentin

+0

* Я получаю сообщение об ошибке * - Почему бы нам не сказать, что говорит об ошибке? – Quentin

ответ

0

Удалить все переменные сообщение и условия из файла php. Ваш код выглядеть следующим образом:

<?php 


if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    // Get the form fields and remove whitespace. 
    $name = strip_tags(trim($_POST["name"])); 
    $name = str_replace(array("\r","\n"),array(" "," "),$name); 
    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL); 


    // Check that data was sent to the mailer. 
    if (empty($name) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     // Set a 400 (bad request) response code and exit. 
     http_response_code(400); 
     echo "Oops! There was a problem with your submission. Please complete the form and try again."; 
     exit; 
    } 

    // Set the recipient email address. 
    // FIXME: Update this to your desired email address. 
    $recipient = "[email protected]"; 

    // Set the email subject. 
    $subject = "New contact from $name"; 

    // Build the email content. 
    $email_content = "Name: $name\n"; 
    $email_content .= "Email: $email\n\n"; 


    // Build the email headers. 
    $email_headers = "From: $name <$email>"; 

    // Send the email. 
    if (mail($recipient, $subject, $email_content, $email_headers)) { 
     // Set a 200 (okay) response code. 
     http_response_code(200); 
     echo "Thank You! Your message has been sent."; 
    } else { 
     // Set a 500 (internal server error) response code. 
     http_response_code(500); 
     echo "Oops! Something went wrong and we couldn't send your message."; 
    } 

} else { 
    // Not a POST request, set a 403 (forbidden) response code. 
    http_response_code(403); 
    echo "There was a problem with your submission, please try again."; 
} 

?>