此脚本用于清除提交中的表单并淡入淡出响应,但由于某些奇怪的原因,它会提交表单两次。如何让它停止发送用户提交两次的信息?
以下是代码:
<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>
答案 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
});
...
});
...