我有一个用户可能会多次提交的表单。下面是我的 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);
}
});
这是怎么回事?我做错了什么或者我该如何解决它?我以前从未遇到过这个问题,我不确定发生了什么。
最佳答案
既然我在评论中发现了问题,我会将其转化为答案。
最可能的情况是您每次都重新绑定(bind)表单提交事件处理程序,以便为每个已绑定(bind)的事件处理程序调用一次您的代码。这不仅会每次调用 .done()
,还会多次调用 ajax()
函数。
解决这个问题的地方就是绑定(bind)提交事件处理程序的地方。它应该只绑定(bind)一次,而不是每次使用表单时都绑定(bind)。
关于jQuery ajax done() 被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459276/