0

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

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

任何人都可以建议有什么更好的方法来解决它吗?

为方便起见,我将给出垃圾设计概述

BROWSER ---to---> WEB[all controllers] ----to-->rest 调用服务。

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

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

第 2 步:我们发布表单 /page/show -POST [srf token included in it]

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

谢谢

4

1 回答 1

0

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

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

  2. 如果您希望在单击按钮后用户根本无法与页面交互,则创建一个背景颜色为灰色且不透明的 div,以便用户能够看到后面的页面并增加其 z 索引,使其在顶部,从而阻止用户与页面交互。(您也可以使用相同的技术在侧 div 中添加加载 gif 图标)

如果你想采取第二种方法,这里有一个小例子可以帮助你

用于 div 的 CSS

#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
  });
}
于 2013-07-23T09:09:23.890 回答