0

ブラウザのボタンを複数回クリックすると、複数のリクエストがサーバーに送信されます。

最も簡単な解決方法は、JavaScript でブラウザのマルチクリックを停止することです。

誰かがそれを解決するためのより良い方法を提案できますか?

簡単にするために、ごみの設計の概要を説明します

BROWSER ---to---> WEB[すべてのコントローラ] ----to-->サービスへの呼び出しを停止します。

追加情報: 注: CSRF トークンを送信しています

ステップ 1: /page/show にいます - GET

ステップ 2: フォーム /page/show -POST [それに含まれる srf トークン] を投稿します。

ステップ 3: 保存が正常に完了すると、再び /page/show にリダイレクトされます

ありがとう

4

1 に答える 1

0

これを解決するには2つの方法があります

  1. ボタンがクリックされたときにボタンを無効にして、読み込み中のgifを表示しないのはなぜですか。gif の読み込みは、何かが起こっていることをユーザーに知らせるために非常に重要です。

  2. ボタンをクリックした後、ユーザーがページをまったく操作できないようにする場合は、背景色が灰色で不透明な div を作成して、ユーザーが背後のページを確認し、その z インデックスを増やして、そのため、ユーザーはページを操作できなくなります。(同じ手法を使用して、サイド div にロード gif アイコンを追加することもできます)

2番目のアプローチを取りたい場合は、ここに小さな例があります

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 に答える