Я использую плагин формы jquery от malsup для отправки формы по электронной почте через PHP, моя форма находится в режиме начальной загрузки.
Кажется, все работает нормально, я получаю сообщение об успехе, но электронная почта никогда не появляется. Это как-то связано с моим Ajax, потому что форма работает, если я не использую AJAX, но затем отправляет пользователя на URL-адрес PHP, поэтому я решил использовать плагин.
Я пробовал функции ajaxForm и ajaxSubmit из malsup, но безуспешно, электронная почта просто не появляется.
Как примечание, я использую другую форму (другое имя и идентификатор) и другой вызов AJAX и PHP, но они работают нормально. Это совершенно разные файлы с разными именами и т.д …
Plugin
http://jquery.malsup.com/form/#getting-started
Живой веб-сайт (нажмите кнопку «Свяжитесь со мной»)
http://www.sitesbymiller.com
HTML
<form class="contactModalForm" id="contactModalForm" action="modalForm.php" method="post">
<div class="form-group">
<label for="contactName">Name*</label>
<input type="text" class="form-control" name="modalName" id="contactName" placeholder="Enter Name" required>
</div>
<div class="form-group">
<label for="contactEmail">Email*</label>
<input type="email" class="form-control" name="modalEmail" id="contactEmail" placeholder="Enter Email" required>
</div>
<div class="form-group">
<label for="contactPhone">Phone</label>
<input type="phone" class="form-control" name="modalPhone" id="contactPhone" placeholder="Enter Phone">
</div>
<div class="form-group">
<label for="contactMessage">Message*</label>
<textarea class="form-control" rows="5" name="modalMessage" placeholder="Enter detailed message" required></textarea>
</div>
<input type="submit" name="modalSubmit" class="btn btn-success" id="modalSubmit" value="Submit"/>
<button type="button" class="btn btn-default modalClose" data- dismiss="modal">Close</button>
</form>
JQuery / AJAX / JS файл
var optionsB = {
url:'modalForm.php',
type:'post',
clearForm:'true',
resetForm:'true',
cache:'false',
success: function() {
alert('Thanks for your message! I will get back to you shortly.');
}
};
// bind to the form's submit event
$('#contactModalForm').submit(function() {
$(this).ajaxSubmit(optionsB);
return false;
});
PHP modalForm.php
<?php
if (isset($_POST['modalSubmit'])) {
if (!$_POST['modalName']) {
$error="<br />Please enter your name";
}
if (!$_POST['modalEmail']) {
$error.="<br />Please enter your email address";
}
if (!$_POST['modalMessage']) {
$error.="<br />Please enter a message";
}
if ($_POST['modalEmail']!="" AND !filter_var($_POST['modalEmail'],
FILTER_VALIDATE_EMAIL)) {
$error.="<br />Please enter a valid email address";
}
if ($error) {
$result='<div class="alert alert-danger"><strong>There were error(s)
in your form:</strong>'.$error.'</div>';
} else {
if (mail("[email protected]", "Message from website modal form!", "Name: ".$_POST['modalName']."Email: ".$_POST['modalEmail']."Phone: ".$_POST['modalPhone']."Message: ".$_POST['modalMessage']."On/Off Switch: ".$_POST['onoffswitch']."Current Website: ".$_POST['modalWebsite']."Favorite Website: ".$_POST['modalFavorite']."Website Features: ".$_POST['modalFeatures']."Website Purpose: ".$_POST['modalPurpose'])) {
$result='<div class="alert alert-success"><strong>Thank
you!</strong> I\'ll be in touch.</div>';
} else {
$result='<div class="alert alert-danger">Sorry, there was
an error sending your message. Please try again later.</div>';
}
}
}
?>
HTML и PHP файлы были хорошими. Просто пришлось внести корректировку в JS / AJAX. Я использовал метод ajaxForm вместо ajaxSubmit и переименовал свою переменную options, а также удалил опцию url, опцию type и опцию cache и perfecto!
Большой крик http://jquery.malsup.com/form/#getting-started за создание такого замечательного плагина, который удобен для пользователя и прост в использовании!
JS / AJAX
var options = {
clearForm:'true',
resetForm:'true',
success: function() {
alert('Thanks for your message! I will get back to you shortly.');
}
};
// pass options to ajaxForm
$('#contactModalForm').ajaxForm(options);
Других решений пока нет …