web开发 如何防止重复提交

来源:互联网 发布:unity3d工程师简历 编辑:程序博客网 时间:2024/05/22 14:28

web开发 如何防止重复提交 [问题点数:40分,结帖人baby_it]

 收藏
楼主发表于: 2013-05-16 12:04:11
重复提交
高手们,求指导,如何防止重复的提交呢?
  •  
  •  
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
回复次数:12
#1 得分:5回复于: 2013-05-16 12:17:18
1、禁用提交事件源
2、设置标识,提交时标识true,完成后标识false
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#2 得分:5回复于: 2013-05-16 12:48:39
我觉得你可以仿照验证码的那种形式来操作,比如说到新增页面前,我将一个特定的标示放到session里面,同时将这个标示放到页面里面,然后新增的时候将放到页面的标示也传到后台,同时和session中的标示进行比较,如果相等就让它新增
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
#3 得分:5回复于: 2013-05-16 12:57:47
如果是jquery,那么可以给submit按钮绑定one函数,也就是第一次起作用。
还可以点击之后将提交按钮置为disable状态。
JavaScript code
?
1
2
3
4
5
6
7
8
9
10
11
12
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
        $("#abv").one("click",function(){
            alert("用户点击了提交按钮");
        });
        /*$("#abv").click(function(){//方案2
            $(this).attr("disabled",true);
        });*/
    })
 </script>
 <input type="submit" id="abv" value="测试用按钮"/>
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#4 得分:5回复于: 2013-05-16 13:01:33
客户端的话提交后立马将表单所有元素设为disable。
服务器端的话,可以考虑每次加载表单都设置一个表单项目的name为一随机字母串,并存入session,一提交就立马从seesion里删除这个字母串,字母串不一至就是重复提交。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#6 得分:0回复于: 2013-05-21 15:45:34
如何是一个超链接,怎么解决呢,大家思想都差不多
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#7 得分:5回复于: 2013-05-22 17:23:39
1.页面Js设置一个全局变量,提交完成后设置为false,提交事件里面去做判断,为true则执行提交,否则不执行.不过这样不够人性化,点了以后才知道不能提交,体验性很差.
2.禁用按钮,提交成功后把提交按钮禁用掉,这样的话比较人性化.
提示:如果只是web页面防止重复提交,最好只在前台做判断,不要通讯后台增加不必要的负担.
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
#8 得分:0回复于: 2013-05-22 18:21:59
到我的博客里下载那个开源项目看看,里面有处理方案...
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#9 得分:0回复于: 2013-05-22 19:03:46
设置一个变量做判断吧 返回成功之后再改变提交按钮事件可用
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#11 得分:5回复于: 2013-05-24 14:02:24
JavaScript code
?
1
2
3
4
5
6
var flag=true
if(flag)
{
//提交
flag=false;
}

提交之前判断。。
  
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
#12 得分:10回复于: 2013-05-28 16:45:56
jq可以实现$(this).attr({ "disabled": "disabled" });提交的时候.
原创粉丝点击