表格提交信息两次。你怎么阻止它?

时间:2013-06-23 02:02:26

标签: jquery ajax

此脚本用于清除提交中的表单并淡入淡出响应,但由于某些奇怪的原因,它会提交表单两次。如何让它停止发送用户提交两次的信息?

以下是代码:

 <script type="text/javascript">
            jQuery(document).ready(function() {
                var clearOnSuccess = function() {
                    if (jQuery('#emailSubmit').length > 0) {
                        jQuery('#email').val('');
                    }
                };
                clearOnSuccess();

                jQuery('#signup').submit(function() {
                    var data = jQuery(this).serializeArray();
                    data.push({'name': 'ajax', 'value': 1});
                    var jqXHR = jQuery.ajax({
                        url: jQuery(this).attr('action'),
                        type: jQuery(this).attr('method'),
                        data: data
                    });

                    jqXHR.done(function(data) {
                        jQuery('#response').fadeIn(1500).delay(3500).fadeOut(1500);
                        clearOnSuccess();
                    });
                    return false;
                });
            });
        </script>

1 个答案:

答案 0 :(得分:2)

在你的jQuery submit()处理程序中,你只是在提交表单后执行代码,但是你再次将这些数据AJAX到服务器,所以你会收到两份副本。尝试使用event.preventDefault()停止提交表单,然后仅通过.ajax()调用发送一次信息:

...
           jQuery('#signup').submit(function(e) {
                e.preventDefault();
                var data = jQuery(this).serializeArray();
                data.push({'name': 'ajax', 'value': 1});
                var jqXHR = jQuery.ajax({
                    url: jQuery(this).attr('action'),
                    type: jQuery(this).attr('method'),
                    data: data
                });
                ...
           });
 ...