解决多次点击按钮的最佳方法

时间:2013-07-23 07:09:18

标签: rest design-patterns web-application-design

多次点击浏览器上的按钮,向服务器发送多个请求。

解决问题的最简单方法是停止通过JavaScript多次点击浏览器。

有人可以提出一些更好的方法来解决它吗?

为了方便,我将提供垃圾设计概述

浏览器---到---> WEB [所有控制器] ----至 - >休息呼叫服务。

添加更多信息: 注意:我们正在发送CSRF令牌

第1步:我们在/ page / show - GET

第2步:我们发布表单/ page / show -POST [包含在其中的srf令牌]

第3步:成功完成保存,我们再次重定向到/ page / show

谢谢

1 个答案:

答案 0 :(得分:0)

有两种方法可以解决这个问题

  1. 为什么不在单击按钮时禁用按钮并显示一些加载gif。加载gif对于告知用户正在发生的事情非常重要。

  2. 如果您想在按钮后点击用户根本不能与页面进行交互,那么创建一个背景颜色为灰色且具有一定不透明度的div,以便用户能够看到后面的页面并增加它的z索引使其位于顶部,从而阻止用户与页面交互。 (您也可以使用相同的技术在side div中添加加载gif图标)

  3. 如果你想采取第二种方法,这里有一个小例子让你去

    css for the div

    #overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: #000;
        filter:alpha(opacity=50);
        -moz-opacity:0.5;
        -khtml-opacity: 0.5;
        opacity: 0.5;
        z-index: 10000;
    }
    
    //function to show overlay
    function ShowOverLay(){
       var overlay = $('<div id="overlay"> </div>');
       overlay.appendTo(document.body)
    }
    
    //function to hide overlay
    function DeleteOverLay(){
       $('.overlay').remove();
    }
    
    //function to get data
    function GetData(){
       //at first show the overlay
       ShowOverLay()
    
       //now make an ajax call
       $.ajax({
       url: url,
       data: data,
       success: function(data){
         if(data){
           //some processing with data if successfull
           //hide the overlay now
           DeleteOverLay();
         }
       },
       dataType: dataType
      });
    }