Не удается получить данные формы для публикации через AJAX с помощью Fancybox - PullRequest
1 голос
/ 01 февраля 2012

Я использую Fancybox, чтобы при нажатии на ссылку всплывала контактная форма.Затем он отправляет данные формы в php-файл, отправляется электронное письмо и возвращается сообщение об успешном завершении.

После того, как я отправил свою форму, страница перезагружается и данные, похоже, никуда не отправляются.Если я отправляю форму без использования AJAX, она работает нормально, но затем загружает новую страницу.

Форма:

<div style="display:none">
     <div id="questions">
       <form id="question-form" action="" method="POST">
         <p>Name</p> <input type="text" name="name">
         <p>Email</p> <input type="text" name="email">
         <p>Item</p> <input type="text" name="item">
         <p>Message</p><textarea name="message" rows="6" cols="25"</textarea>
         <br/>
         <input type="submit" value="Send">
      </form>
    </div>
</div>

Сценарий

$("#question-form").bind("submit", function() {

    $.fancybox.showActivity();

    $.ajax({
    type        : "POST",
    cache       : false,
    url         : "/includes/question-mailer.php",
    data        : $(this).serializeArray(),
    success     : function(data) {
                      $.fancybox(data);
                  }
});

return false;
});

Что я делаю неправильно

1 Ответ

2 голосов
/ 03 февраля 2012

Это была простая ошибка, я помещал сценарий выше в его собственные теги <script> вместо основного прикрепления fancybox script.Мой окончательный код:

<script type="text/javascript">
$(document).ready(function(){
    $("a.lightbox").fancybox({
        'transitionIn'  :   'fade',
        'transitionOut' :   'fade',
        'speedIn'       :   600, 
        'speedOut'      :   200, 
        'overlayShow'   :   false
    });

    $("#question-form").bind("submit", function() {

        $.fancybox.showActivity();

        $.ajax({
            type        : "POST",
            cache       : false,
            url         : "/includes/question-mailer.php",
            data        : $(this).serializeArray(),
            success     :function(data){
                            $.fancybox(data);
                         }
        });

        return false;
    });

});     
</script>
...