为了防止两次出错,我使用beforeSend。
hasSent = false
function submit() {
if (!hasSent)
$.ajax({
url: "${createLink(controller:'userInvitation', action:'ajaxUpdate')}",
type: "POST",
data: $("#invitationForm").serialize(),
success: function(data, textStatus, jqXHR) {
$('#invitationForm')[0].reset();
$('.thank-you-modal').modal('show');
hasSent = true;
console.log(hasSent)
},
complete: function() {
hasSent = false;
console.log(hasSent)
}
});
}
正如您所看到的,只有在hasSent=false
时才会发生ajax。
出于某种原因,如果用户在提交按钮上单击多次(非常快)
ajax
答案 0 :(得分:1)
为防止出现此类问题,请在发送ajax之前禁用该按钮,然后在成功函数内部启用
$(mybutton).prop("disabled",true);
// ajax call here
然后
success: function(data, textStatus, jqXHR) {
$(mybutton).prop("disabled",false);
// code here
}
答案 1 :(得分:1)
您可以创建另一个标记,例如 isSending
function ov3rfly_replace_include_blank($name, $text, &$html) {
答案 2 :(得分:0)
有两种方法可以做到这一点。
1)创建一个标志并检查按钮是否被按下。如果按下则不执行ajax代码
请求成功后更改标志,如此
success:function(...)
{
flag=false;
}
或者您可以在按钮单击时禁用按钮,以便执行请求并且不会出现双击情况。像这样启用按钮
complete:function(..){ $("yourbutton").attr("disabled",false)}