Скрипт контактной формы Ajax не отправляет сообщение по электронной почте

Итак, я написал скрипт в ajax, который соединяется со скриптом PHP mail () для отправки электронного письма info@example.com (очевидно, заменив example.com моим доменом) и электронная почта отправляется нормально, все настроено, за исключением одной проблемы:

     $.ajax({
url:'contact.php',
type:'POST',
data: {
name:name,
email:email,
message:message
},
dataType: 'json',
success: function(response){
alert(response);
},
error: function(response){
alert("Oops, something went wrong. Please try again.");
}
})
return false;
event.preventDefault();
})

Полученное письмо отформатировано в точности так, как указано в contact.php:

<?php
$to = "info@example.com";
$from = $_POST['email'];
$name = $_POST['name'];
$message =$_POST['message'];
echo $_POST['test'];
$subject = "Contact form from: ".$name;
$body = 'Hello developer(s)!<br><br>
The following is a submission from the Contact Form on <a target="_blank" href="https://example.com">example.com</a>. Please respond using your own email (like info@example.com).<br><br>
Name: '.$name."<br>
Email: ".$from."<br>
Message: <br>".$message."<br><br>
Thank you!";
$headers = "From: ".$name." <".$from."> \r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($to,$subject,$body,$headers);
echo "Success!<br></br>";
?>

Который выводит следующее:

Hello developer(s)!

The following is a submission from the Contact Form on example.com. Please respond using your own email (like info@example.com).

Name: Owen Sullivan
Email: sulliops@gmail.com
Message:Thank you!

Обратите внимание, что сообщение отсутствует, даже если сообщение было отправлено в форме. Любая идея, почему это единственная часть отсутствует?

РЕДАКТИРОВАТЬ: Это код формы:

<form method="post" name="cform" id="cform" action="contact.php" class="contact-form">
<div class="row">
<div class="col-sm-6">
<input name="name" id="name" type="text" class="form-control" placeholder="Your Name..." required>
</div>
<div class="col-sm-6">
<input name="email" id="email" type="email" class="form-control" placeholder="Your Email..." required>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<textarea name="message" id="message" cols="" rows="4" class="form-control" placeholder="Your Message..." required></textarea>
</div>
</div>

<div class="row">
<div class="col-sm-12 text-right">
<input type="submit" id="submit" name="send" class="submitBnt btn btn-custom" value="Send Message">
</div>
</div>
<div id="simple-msg"></div>
</form>

ФИКСИРОВАННЫЙ AJAX-КОД:

$.ajax({
url:'contact.php',
type:'POST',
data: $(this).serialize()
dataType: 'json',
success: function(response){
alert(response);
},
error: function(response){
alert("Oops, something went wrong. Please try again.");
}
})
return false;
event.preventDefault();
})

-1

Решение

Вот некоторые изменения, которые я бы предложил

// You have a syntax error on yours, you need a listener
$(document).ready(function() {
/** Listen for submit **/
$("#cform").on("submit",function(event) {
// Stop form from submitting normally
event.preventDefault();
// Send ajax
$.ajax({
url: 'contact.php',
type: 'POST',
// Serialize the form
data: $(this).serialize(),
// Remove the json
success: function(response){
alert(response);
},
error: function(response){
alert("Oops, something went wrong. Please try again.");
}
});
});
});

Тогда в вашем PHP будет что-то вроде:

    <?php
$to      = "info@example.com";
$from    = trim($_POST['email']);
# Stop if you don't have a valid address
if(!filter_var($from,FILTER_VALIDATED_EMAIL))
die('Invalid email address.');
# Strip out stuff from the submission
$name    = htmlspecialchars(strip_tags(trim($_POST['name'])));
$message = htmlspecialchars(strip_tags(trim($_POST['message'])));

$subject = "Contact form from: ".$name;
$body    = 'Hello developer(s)!<br /><br />
The following is a submission from the Contact Form on <a target="_blank" href="https://example.com">example.com</a>. Please respond using your own email (like info@example.com).<br><br>
Name: '.$name."<br>
Email: ".$from."<br>
Message: <br />".$message."<br /><br />
Thank you!";
$headers = "From: ".$name." <".$from."> \r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
# You need to make a condition to make sure it does, in fact, send
echo (mail($to,$subject,wordwrap($body, 70, "\r\n"),$headers))? 'Success!' : 'Failed to send message.';


РЕДАКТИРОВАТЬ:

НОТА: У вас есть два представления для ajax, один из которых вы добавляете, а другой — в вашем <script src="js/app.js"></script> файл начинается со строки 76, Вы дублируете свои усилия по добавлению его снова. Вам захочется отредактировать этот блок … или удалить его и построить вышеописанное.

0

Другие решения

Вы должны проверить, где вы получаете значение для «сообщения» textarea, Убедитесь, что вы используете .val() или же .value, Вы, вероятно, используете .text() на всех полях формы, и это не удается для вашего textarea,

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector