避免数据二次提交的处理方式
有时候,提交数据,会出现重复提交的问题。
可以通过一个标记锁死,等待执行完了,再解锁。
这个标记是全局的。
var flag = false; // 全局变量
// 藏宝
function gotoBuriedTreasure() {
// 藏起来
var amount = parseInt($("#buried-treasure-value").val());
if (typeof amount != 'number' || amount < 1000 || amount%40 != 0) {
// 藏宝值
toast('藏宝数量必须大于1000,并且是40的倍数');
return;
}
var user = $api.getStorage('user');
showNumberModel(function(actionPwd){
if (flag) {
return;
}
flag = true; // 避免二次提交
// 藏宝
api.ajax({
url: BASE_REQUEST_URL + '/Customer/TreasureInvest',
method: 'post',
data: {
values: {
customerId: user.customer_id,
actionPwd:actionPwd,
amount:amount
}
}
}, function(json, err) {
if (json && json.result) {
var auitoast = new auiToast();
if (amount>=1000 && amount < 10000) { // 绿色箱子
auitoast.success({
title:"恭喜藏宝成功,获得40个绿色藏宝图。",
duration:2000
});
}
if (amount>=10000 && amount < 100000) { // 蓝色箱子
auitoast.success({
title:"恭喜藏宝成功,获得40个蓝色藏宝图。",
duration:2000
});
}
if (amount>=100000 && amount < 500000) { // 橙色箱子
auitoast.success({
title:"恭喜藏宝成功,获得40个橙色藏宝图。",
duration:2000
});
}
if (amount >= 500000) { // 紫色箱子
auitoast.success({
title:"恭喜藏宝成功,获得40个紫色藏宝图。",
duration:2000
});
}
buriedTreasureDialogHide();
api.sendEvent({
name: 'game_data_reload',
extra: {
msg: '数据刷新'
}
});
} else {
flag = false; // 失败可以二次提交
toast(json.msg);
}
});
});
}
这是一种思路,其他的语言可以一样使用。