Ajax和Fancybox形式重定向

时间:2011-03-22 21:45:03

标签: javascript jquery ajax fancybox

所以我有一个聪明的主意,使用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 个答案:

答案 0 :(得分:2)

(这个答案源于我和MackDaddy在问题评论中的讨论。)

这里的问题不是Ajax或Fancybox中断了表单的预期流程(阻止它跟随action),而是简单地说:

  1. 选择器是错误的,因为div#email_form不是表单本身,而是它的容器,因此不能接受submit事件;和
  2. Fancybox似乎删除div并将其替换在其自己的容器内的其他位置。因此,使用bind函数不能按预期工作,因为它附加的元素将从DOM中删除并插入副本。应该使用live函数,因为它不仅会将事件附加到第一个#email_form,还会将所有后续事件附加到DOM中。

答案 1 :(得分:0)

您是否在表单中尝试了action="javascript: void(0)"