2015-03-14 3 views
1

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

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

Я пробовал функции 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>'; 
        } 
     } 
} 
?> 
+0

Если другая форма AJAX/PHP работает нормально, и вы получаете сообщения об успешном выполнении, может быть проблема в коде электронной почты? Кроме того, вы должны опубликовать свой PHP. – baum

+0

Добавлен код @baum php. Я не хотел, чтобы сообщение было длиной в милю, но думаю, что имеет смысл опубликовать его! Благодаря! – SteveMills04

+0

Итак, вы видите «Спасибо, я свяжусь». сообщение? – baum

ответ

0

HTML и PHP файлы были хорошими. Просто нужно было настроить JS/AJAX. Я использовал метод ajaxForm вместо ajaxSubmit и переименовал переменную параметров, а также удалил опцию url, тип опции и параметр кеша, и 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);