2009-08-20 15 views
0

Wenn ich auf einen Link klicke, wird ein Servlet aufgerufen.Wie vermeidet man doppelte Anfrage?

Gibt es eine Möglichkeit, die doppelte Anfrage durch Filter oder etwas zu verfolgen, so dass ich vermeiden kann, das Servlet zu treffen?

Antwort

0

Möchten Sie dies wirklich für JEDE Anfrage tun? Wenn Sie dies nicht tun, verwenden Sie die erste Lösung in Jon's Antwort und ignorieren Sie Dinge, die keine GUID haben.

Sie können dies in Javascript ziemlich einfach tun. Nach jedem Link geklickt wird, verhindern, dass es erneut angeklickt werden: (einige YUI verwenden):

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 
    }); 
    } 
}); 

Sie auch dann deaktiviert Anker machen könnten, wenn Sie darauf klicken. Ein wenig anders. Einfach, dies nur auf Ankern zu implementieren, die Sie nur mit einem Klick aktivieren möchten.

2

In der Regel legen Sie eine Art "Anfrage-ID" in den Link, z. eine GUID Sie verfolgen entweder träge die Identifizierungen, die Sie bereits gesehen haben (und ignorieren alles in diesem Satz), oder verfolgen Sie diejenigen, die Sie generiert haben, aber nicht gesehen (und ignorieren alles nicht in diesem Satz).

+1

Dies könnte Sie beißen, wenn Sie Links mit Menschen teilen ... –

+0

@Steve - Dies ist in der Regel ein Problem mit Formular-Posts, wo die GUID als versteckte Eingabe und nicht als Parameter in der URL enthalten ist. –

+0

@Steve: Ich würde sagen, das ist ein Problem in der Frage. Der OP muss vorsichtig sein, was er damit macht. Es wird immer einige inhärent "nicht teilbare" Links geben. –

0

Es gibt absolut keinen Grund, ein riesiges Javascript-Framework zu verwenden, nur um einen Link dynamisch zu deaktivieren.

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

Fertig.

Verwandte Themen