Как избежать дублирования запроса? - PullRequest
0 голосов
/ 20 августа 2009

Если я нажму на ссылку, я вызываю сервлет.

Есть ли возможность отследить повторяющийся запрос через фильтр или что-то еще, чтобы я мог избежать попадания в сервлет?

Ответы [ 3 ]

3 голосов
/ 20 августа 2009

Как правило, вы помещаете в ссылку своего рода «идентификатор запроса», например, GUID. Вы либо лениво отслеживаете идентификаторы, которые вы уже видели (и игнорируете что-либо в этом наборе), либо отслеживаете те, которые вы сгенерировали, но не видели (и игнорируете что-либо не в этом наборе ).

0 голосов
/ 21 августа 2009

Нет абсолютно никакой причины использовать огромную инфраструктуру Javascript только для динамического отключения ссылки.

<a href="/test" onmouseup="this.href='';" />

Готово.

0 голосов
/ 20 августа 2009

Вы действительно хотите сделать это для КАЖДОГО запроса? Если вы этого не сделаете, используйте первое решение в ответе Джона и игнорируйте вещи, у которых нет guid.

Вы можете сделать это в JavaScript довольно легко. После того, как нажата любая ссылка, предотвратите повторный щелчок по ней: (используя некоторый YUI):

YAHOO.util.Event.onDOMReady(function(){
  function killIt(e){
    YAHOO.util.Event.stopEvent(e);
  }

  var anchors = document.getElementsByTagName('a');
  for(var i = 0; i < anchors.length; i++){
     YAHOO.util.Event.addListener(anchors[i], 'click', function(e){
       var el = YAHOO.util.Event.getTarget(e);
       YAHOO.util.Event.removeListener(el, 'click'); // kill existing handle
       YAHOO.util.Event.addListener(el, 'click', killIt); // kill any future clicks
     });
   }
});

Вы также можете отключить привязку при нажатии на нее. Немного по-другому. Прямо вперед, чтобы реализовать это только на якорях, которые вы хотите включить одним щелчком мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...