JavaScript [jQuery] Autocomplete löst ajaxError aus

Fou-Lu

Lt. Junior Grade
Registriert
Aug. 2006
Beiträge
290
Hallo CBler,

ich hätte da eine Frage bezüglich jQuery UI dem "autocomplete".
Vielleicht ist es einigen ja bereits aufgefallen, aber bei jedem neuen Tastenanschlag in der Textbox bricht das autocomplete den vorherigen Request ab z.B.

Ich tippe: a (request wird abgesestzt)
Ich tippe: ab (erster request wird abgebrochen - vorausgesetzt er war noch nicht abgeschlossen - und neuer mit "ab" abgesetzt)

Das Problem ist nun, dass der Abbruch von dem vorherigen Request einen ajaxError auslöst.

Meine Frage nun... kann man es irgendwie handlen, dass man entweder absolut eindeutig im globalen Error-Handling unterscheiden kann, dass der Fehler gerade vom Abbruch der autocomplete kommt oder eventuell das im lokalen Handling der autocomplete der Fehler abgefangen werden kann ohne dass er an das globale Handling weitegeleitet wird?

Ich hoffe ihr versteht was ich meine :D

Ich hab vorhin gesehen, dass man eventuell nach dem response.status (code 0) gehen könnte, aber error.status 0 kann auch noch bei anderen Aktionen/Funktionen vorkommen. Ist also kein absolut eindeutiges Filterkriterium.
 
Am besten mit dem Delay arbeiten:
http://api.jqueryui.com/autocomplete/#option-delay
Damit der Request nicht direkt nach jeder Eingabe gestartet wird, sondern erst so nach 1 - 2 Sekunden.

Edit: Wenn du den Request irgendwie im Error Handler identifizieren möchtest, müsstest du wohl die Request-URL irgendwie prüfen und entscheiden ob es sich um die autocomplete url handelt.
 
Zuletzt bearbeitet:
Ich habe damals die Eingaben erst in einen Stack aufgenommen. Solange der User neue Zeichen eingibt, füllt sich der Stack.
Wärenddessen läuft der Request. Ist er abgeschlossen, wird das oberste Element (die neueste Anfrage) vom Stack genommen, der Stack geleert und der Request abgesetzt. Neue Requests werden dann nur ausgeführt, sofern der Stack nicht leer ist.

Mit der Methode sieht der Nutzer Zwischenergebnisse und kein Fehlerhandling durch abgebrochene Requests sind nötig.
 
Zurück
Oben