我代码是放在error里面的,但是写的逻辑半点用都没有,还是提交成功了,还有怎么只能提交一次!!!
球大神教一教!
看样子是用的 jQuery,建议你不要用 success: callback
和 error: callback
,改用 .done(callback)
和 .fail(callback)
(我后面的代码会演示)。
然后要解决只提交一次的问题,需要设置一个状态变量,比如叫 submited
。它所在的作用域只需要在 ajax 调用所在的作用域就行,甚至可以通过闭包隐藏起来
var doSubmit = (function() {
var submited = false;
return function() {
// 检查到已经提交过了,直接返回不再进行提交
if (submited) {
return;
}
submited = true;
$.ajax({
// ....
}).done(function() {
// 提交成功
mui.toast("恭喜提交成功");
}).fail(function(xhr, type, error) {
// 提交失败恢复 submited 为 false 以便下次提交
mui.toast("提交失败");
submited = false;
});
};
})();
// 在某种情况下触发
doSubmit();
var flag=false;
if(flag==false){
ajax....
success:function(data){
if(data.code==1003){
flag=true;
}
}
}else{
alert("您已提交成功")
}
在发起ajax请求前声明一个状态变量作为判断的依据,初始值为true,当ajax请求成功后将变量置为false。检验代码应该写在ajax请求外面,当不满足条件时return false
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答867 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
。。。你把逻辑判断写$.ajax()前面。
mui.alert()后面写return