微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – JQuery:防止AjaxComplete中定义的事件多次绑定(和触发)

我遇到了 JQuery(最新)的ajaxComplete()函数的问题.
这是场景:
表单显示在灯箱中,以允许用户输入送货地址.
该表单的提交按钮绑定到脚本的ajaxComplete()部分中的函数(因为表单本身是使用Ajax加载的).表单数据也通过Ajax发送到服务器.如果用户输入的数据不完整/无效,则会显示错误消息,用户可以再次输入.问题是,每次执行时,.done()Ajax函数都会以指数方式执行多次:第一次,然后是两次,然后是4次,等等.
我想这是因为每次进行Ajax调用并完成(如表单提交),事件第二次被绑定,然后这两个事件再次绑定,使其成为4个:-(

这是一段代码片段:

$(document).ajaxComplete(function() {
    $('#frm_create_address').submit(function(event) {
        var formData = $('#frm_create_address').serialize();

        $.ajax({
            type        : 'POST',url         : '/ajax_results.asp?doIT=checkoutCreateAddress',data        : formData,dataType    : 'text',encode      : true
        })

        .done(function(data) {
            alert("Answer: " + data);
        })
        .fail(function(jqXHR,textStatus) {
            alert("error: " + textStatus);
        });

        return false;
    });
});

在这里失去了…什么是防止多次触发.done()函数的最佳方法

实际上更好的问题是:什么是阻止提交事件的多重绑定的最佳方法: – /

在此先感谢您的帮助!
克里斯

解决方法

在ajax函数中设置global:false.

global (default: true)
Type: Boolean
Whether to trigger global
Ajax event handlers for this request. The default is true. Set to
false to prevent the global handlers like ajaxStart or ajaxStop from being triggered. This can be used to control varIoUs Ajax Events.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐