У меня есть форма начальной загрузки, которая при отправке выводит меня на другую страницу, показывающую сообщение об успехе, сгенерированное сценарием 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.";
}
?>
Я искал везде, ноне могу за всю жизнь выяснить, почему это не работает.Электронная почта также не отправляется на мой почтовый ящик (в этом примере я редактировал электронную почту, код, который я использую, содержит мой реальный адрес электронной почты).
Пожалуйста, помогите!Заранее спасибо.