Отправка форм Ajax и PHP

Я использую плагин формы malsup jquery для отправки формы по электронной почте через PHP, моя форма находится в модальном режиме начальной загрузки.

Кажется, все работает нормально, я получаю сообщение об успешном завершении, но электронное письмо никогда не появляется. Это как-то связано с моим Ajax, потому что форма работает, если я не использую AJAX, однако затем она отправляет пользователя на URL-адрес PHP, поэтому я решил использовать плагин.

Я пробовал функции ajaxForm и ajaxSubmit из malsup, но безуспешно, электронная почта просто никогда не появляется.

В качестве примечания я использую другую форму (другое имя и идентификатор) и другой вызов AJAX и PHP, но они работают нормально. Это совершенно отдельные файлы с разными именами и т. д.

Плагин 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>';
                     }
        }
}
?> 

person SteveMills04    schedule 14.03.2015    source источник
comment
Если ваша другая форма AJAX/PHP работает нормально, и вы получаете сообщения об успешном выполнении, может ли проблема быть в коде электронной почты? Кроме того, вы должны опубликовать свой PHP.   -  person baum    schedule 14.03.2015
comment
Добавлен PHP-код @baum. Я не хотел делать пост длинной в милю, но думаю, что имеет смысл публиковать его! Спасибо!   -  person SteveMills04    schedule 14.03.2015
comment
Итак, вы видите сообщение Спасибо! Я буду на связи. сообщение?   -  person baum    schedule 14.03.2015
comment
@baum точно, но письмо так и не приходит. Форма очищается и все.   -  person SteveMills04    schedule 14.03.2015
comment
Проверить спам? Раньше я пробовал использовать PHP mail, и если ваш почтовый сервер настроен неправильно, сообщения будут попадать в спам. Кроме того, если в вашей системе нет программы sendmail или ее эквивалента, убедитесь, что SMTP-сервер правильно настроен.   -  person baum    schedule 14.03.2015
comment
@baum Спам проверил, ничего. Я использую тот же самый сценарий в форме в разделе «Контакты» на веб-сайте, и он работает нормально. Я не знаю, является ли это модальным, вызывающим проблему, или ajax.   -  person SteveMills04    schedule 14.03.2015
comment
@baum Я исправил это. Я думаю, что некоторые параметры вызывали проблемы в моем AJAX, и мне пришлось использовать ajaxForm, а не ajaxSubmit. Спасибо за помощь. Я опубликую свой код в ближайшее время.   -  person SteveMills04    schedule 14.03.2015


Ответы (1)


Файлы HTML и PHP были хороши. Просто пришлось внести коррективы в JS/AJAX. Я использовал метод ajaxForm вместо ajaxSubmit и переименовал свою переменную параметров, а также удалил параметр URL, параметр типа и параметр кеша, и отлично!

Большое спасибо http://jquery.malsup.com/form/#getting-started за создание такого замечательного плагина, который удобен и прост в использовании!

JS/АЯКС

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); 
person SteveMills04    schedule 14.03.2015