Перенаправление форм Ajax и Fancybox - PullRequest
1 голос
/ 23 марта 2011

Итак, у меня появилась блестящая идея использовать fancybox и jquery для отправки формы через AJAX. Форма на самом деле отображается довольно хорошо. Однако при отправке формы пользователь всегда перенаправляется. Я пытался смягчить это несколькими способами, но безрезультатно. Прошло много времени с тех пор, как я использовал jQuery, поэтому это может быть что-то глупое. Я не могу на всю жизнь понять, что происходит не так.

Вот код, насколько мне известно, он должен предотвратить перенаправление формы:

    $('#fancybox-wrap #email_form').bind('submit', function(){
        $.fancybox.showActivity();
        var form_data = $(this).serialize();
        form_data[crap] = 'Crap';

        $.ajax({
            type    : "POST",
            cache   : false,
            url     : "<?php echo site_url('inventory/email'); ?>",
            data    : form_data,
            success: function(data) {
                $.fancybox(data);
            }
        });

        return false;
    });

Если есть более лучшие способы сделать это, я был бы рад их услышать. Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

(Этот ответ вытекает из дискуссии между мной и МакДэдди в комментариях к вопросу.)

Проблема здесь не в том, что Ajax или Fancybox прервали намеченный поток формы (мешая ему следовать за action), а скорее просто в том, что:

  1. Селектор неправильный, поскольку div#email_form не сама форма, а ее контейнер, и поэтому не может принимать событие submit; и
  2. Похоже, что Fancybox удаляет div и заменяет его где-то внутри своих собственных контейнеров. Поэтому использование функции bind работает не так, как ожидалось, поскольку элемент, к которому она присоединяется, удаляется из DOM и вставляется дубликат. Вместо этого следует использовать функцию live, поскольку она будет прикреплять событие не только к первому #email_form, но и ко всем последующим, которые вставляются в DOM.
0 голосов
/ 23 марта 2011

Вы пробовали action="javascript: void(0)" в вашей форме?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...