避免数据二次提交的处理方式

有时候,提交数据,会出现重复提交的问题。

可以通过一个标记锁死,等待执行完了,再解锁。

这个标记是全局的。

        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);
                        }
                    });
                });

        }

这是一种思路,其他的语言可以一样使用。

posted @ 2017-01-13 16:52  TBHacker  阅读(599)  评论(0编辑  收藏  举报