我有一个用户可能会多次提交的表单。以下是我submit
事件中包含的代码。
当用户第一次提交表单时,一切都很顺利,done
回调会被执行一次。在每次提交表单时,done
回调都会被执行,但表单提交的次数很多,data
参数是最近提交的数据。
var $form = $(e.currentTarget);
$.ajax({
url: $form.attr('action'),
data: $form.serialize(),
type: 'POST'
}.done(function(data) {
if (data.success === true) {
alert('success!');
} else {
alert(data.errors);
}
});
发生了什么事?我做错了什么或者我该如何解决?我之前从来没有遇到过这个问题,我也不确定是怎么回事。
答案 0 :(得分:2)
由于我在评论中发现了问题,我会将其转化为答案。
最有可能的情况是,每次重新绑定表单提交事件处理程序,以便为已绑定的每个事件处理程序调用一次代码。这不仅会每次调用.done()
,还会多次调用ajax()
函数。
修复此问题的地方是绑定提交事件处理程序的位置。它应该只绑定一次,而不是每次使用表单。
答案 1 :(得分:1)
好的,我的坏。每当我展示它时,我都会在不知不觉中将submit
事件绑定到表单上(通常是隐藏的)。我没有注意到整个请求被多次发送,而不仅仅是done
回调。