2010-12-27 18 views
1

ich eine leicht modded jQuery Autocomplete-Plugin bin mit,AJAX-Anfrage bis zum Ende deaktivieren?

es einfach geändert, um ein JSON-Objekt aus einer MySQL-Datenbank zu holen anstatt einige Array.

Allerdings habe ich festgestellt, dass beim Klicken auf das Eingabefeld, würde eine neue Anfrage, die gleiche wie die vorhergehende .. Und wenn ich wieder ein anderes geklickt, und viele viele schnelle Klicks begann schnell ein schreckliches Problem zu formen .. Es steht nichts im Wege, eine unbegrenzte Anzahl von Anfragen pro Sekunde zu senden.

SO, da ich die Anfrage an einen bestimmten Ort senden, und dieser Ort sollte nie die gleiche Anfrage zweimal behandeln, Wie kann ich stoppen, dass es eine neue Anfrage senden, wenn das Eingabefeld die gleiche Zeichenfolge wie letzte Anfrage enthält?

Und das ist, wo ich das modifizierte Plugin von bekam:

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

+0

"Durch Klicken" !! Kannst du uns etwas Code zeigen? befestigst du den Ajax auf 'Click' Event im Eingabefeld anstatt auf' change' Event ?! Warum auch immer ein veraltetes Plugin verwenden? – ifaour

Antwort

1

Sie brauchen nur eine Flagge in einen Mutex Semaphore beinhaltet, setzen, die, ob eine Anforderung kennt, ist aktiv im Gange, so dass Anstatt eine neue Anfrage auszulösen, prüfen Sie, ob eine Anfrage aktiv ist und fahren nur fort, wenn nicht.

var inProgress = false; 

$('selector').click(function() { 
    if (!inProgress) { 
    inProgress = true; 
    ajaxRoutine(); 
    } 
}); 

function ajaxRoutine() { 
    ... 
    inProgress = false; 
    return; 
} 
+1

Vergessen Sie nicht, 'inProgress' auch bei einem Fehler auf 'false' zu setzen. –

+0

@Byron Whitlock: Nun, jede Ausgangsbedingung muss die Flagge setzen. – Orbling

Verwandte Themen