0

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

这是代码:

 <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>
4

1 回答 1

2

在您的 jQuerysubmit()处理程序中,您只是在提交表单后执行代码,但随后您再次将该数据 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
                });
                ...
           });
 ...
于 2013-06-23T02:07:56.660 回答