我遇到了 JQuery(最新)的 ajaxComplete()
函数的问题。
这是场景:
灯箱中显示一个表单,允许用户输入送货地址。
该表单的提交按钮绑定(bind)到脚本的 ajaxComplete()
部分中的函数(因为表单本身是使用 Ajax 加载的)。表单数据也通过 Ajax 发送到服务器。如果用户输入的数据不完整/无效,则会显示错误消息,用户可以重新输入。问题是,每次他这样做时,.done()
Ajax 函数都会以指数方式执行多次:第一次,然后两次,然后 4 次,依此类推。
我想这是因为每次进行和完成 Ajax 调用(如表单提交)时,事件都会被第二次绑定(bind),然后这 2 个事件再次绑定(bind),成为其中的 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()
函数的最佳方法是什么?
实际上更好的问题是:防止提交事件多重绑定(bind)的最佳方法是什么:-/
在此先感谢您的帮助! 克里斯
最佳答案
在您的 ajax 函数中设置 global: false
。
global (default:
true
)
Type: Boolean
Whether to trigger global Ajax event handlers for this request. The default istrue
. Set tofalse
to prevent the global handlers likeajaxStart
orajaxStop
from being triggered. This can be used to control various Ajax Events.
关于javascript - JQuery:防止多次绑定(bind)(和触发)AjaxComplete 中定义的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536912/