index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> </head> <body> <div id="page-wrapper"> <form id="ajax-contact" method="post" action="mailer.php"> <div class="field"> <input type="text" id="name" name="name" required> </div> <div class="field"> <input type="email" id="email" name="email" required> </div> <div class="field"> </div> <div class="field"> </div> </form> </div> </body> </html>
mailer.php
<?php // My modifications to mailer script from: // <a href="http://blog.teamtreehouse.com/create-ajax-contact-form" target="_blank">http://blog.teamtreehouse.com/create-ajax-contact-form</a> // Added input sanitizing to prevent injection // Only process POST reqeusts. $from='brydz@szlem.edu.pl'; if ($_SERVER["REQUEST_METHOD"] == "POST") { // Get the form fields and remove whitespace. // Check that data was sent to the mailer. // Set a 400 (bad request) response code and exit. http_response_code(400); exit; } // Set the recipient email address. // FIXME: Update this to your desired email address. $recipient = "hello@example.com"; // 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. // Set a 200 (okay) response code. http_response_code(200); } else { // Set a 500 (internal server error) response code. http_response_code(500); } } else { // Not a POST request, set a 403 (forbidden) response code. http_response_code(403); } ?>
app.js
$(function() { // Get the form. var form = $('#ajax-contact'); // Get the messages div. var formMessages = $('#form-messages'); // Set up an event listener for the contact form. $(form).submit(function(e) { // Stop the browser from submitting the form. e.preventDefault(); // Serialize the form data. 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.'); } }); }); });