我有一个表格,用户可能会多次提交。以下是我的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/

10-12 12:47
查看更多