注册时同一个用户注册多回,数据库中也出现多条一样的数据,后台已经进行了校验,前台js也限制了两秒提交一次,但是还是会出现多条
前端控制:
var isSubmitting = false;
if(!isSubmitting){
$.ajax({
type: "post",
data: {uuid:uuid, other:data},//uuid在注册页面加载时由后端生成
contentType: "application/json",
url: "/caiyongji.com/submit",
beforeSend: function () {
//变量控制(js角度)
isSubmitting = true;
// 禁用按钮(browser角度,可能出现延迟)
$("#submit").attr({ disabled: "disabled" });
},
success: function (data) {
//成功
},
complete: function () {
$("#submit").removeAttr("disabled");
isSubmitting = false;
}
});
}
后端控制:
//手头没缓存组件,简易写一个
private static ConcurrentMap<String, String> cache = new ConcurrentHashMap<>();
public void preventDuplicateSubmit(String uuid, Object other){
if (StringUtils.isEmpty(cache.get("uuid"))) {
cache.put("uuid", uuid)
//继续
}else{
return;
}
}