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