|
||||
Zitat:
|
Sponsored Links |
|
|||
Zitat:
|
|
|||
Genau da ist ja mein Problem
Zitat:
cu Frank |
|
|||
Also ich hab es jetzt wie folgt gelöst:
1. Ein onChange in einem Eingabefeld startet eine Fehlerprüfung validateFields(); 2. Ein ajaxRequestCounter wird bei jedem Ajax Aufruf hochgezäht und bei einem onComplete wieder runtergezählt. 3. Ein errorState wird zu Begin der Prüfung auch 0 gesetzt, tritt während der Prüfung ein Fehler auf, wird dieser auf 1 gesetzt. Ein Funktion checkErrorState() prüft alle 3 Sekunden die beiden Variablen ajaxRequestCounter und errorState ab. Wenn ajaxRequestCounter!=0 ist, wird nix verändert da die Prüfung noch läuft. Wenn der ajaxRequestCounter=0 ist, wird der Button je nach Wert von errorState eingestellt. Das läuft soweit stabil, asynchron und vermeidet unbeabsichtigtes "springen" der Buttons. Danke für alle Beiträge! Frank |
|
||||
Wenn Du mit der Lösung zufrieden bist, dann OK.
Ich habe bisher kaum was mit AJAX gemacht, aber kann es nicht auch passieren, dass bei 2 Requests der zweite vor dem ersten fertig wird? Angenommen ich fülle ein Feld fehlerhaft aus, der Request zur Überprüfung wird geschickt, ich korrigiere meine Eingabe, ein zweiter Request wird geschickt. Der zweite kehrt zurück und setzt errorState auf 0, der erste Request kehrt zurück und setzt errorState auf 1, folglich kann das Formular nicht abgeschickt werden, obwohl die Eingabe korrekt sind. Andersherum könnte man sich die Situation auch vorstellen, so dass dann theoretisch ein Absenden mit ungültigen Daten möglich wäre. Ich gehe mal davon aus, dass die Daten sowieso nochmal geprüft werden, wenn das Formular abgeschickt wird, aber falls man das Formular gar nicht abschicken kann ... Außerdem würden so u.U. zahlreiche unnötige Requests rausgeschickt werden, wenn z.B. während einer Überprüfung 3 neue anfallen, dann würden bei der Counter-Variante alle 3 rausgeschickt werden (parallel zum ersten), bei meiner Methode lediglich einer (nachdem der erste fertig ist). btw: Wann wird onchange z.B. bei einem Textfeld ausgelöst? Das war doch bei jeder Änderung, oder nicht? Wenn ich jetzt also irgendwo einen Text von 20 Zeichen eintippe, dann werden u.U. 20 Requests parallel ausgelöst? |
|
|||
Das onChange wird beim verlassen des Feldes ausgelöst. Es wird also nicht bei jedem Tastendruck ein Event gestartet.
Das der erste Request nach dem zweiten zurück kommt ist eher unwahrscheinlich, und der Counter zeigt ja auch an, dass noch eine Prüfung im Gange ist. Hier könnte man ggf. noch einen FallBack einbauen. Theoretisch könnte mal alternativ auch alle paar Sekunden eine Prüfung durchführen, um unabhängig von dem onChange zu sein. Dadurch werden aber viele Requests abgesetzt die unnötig wären. cu Frank |
Stichwörter |
ajax, javascript |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Ajax - Datenbanksbruf: ASP Datei mit PHP code füllen? | braindead | Javascript & Ajax | 3 | 19.10.2009 14:35 |
Jquery AJAX Aufruf und Tablesorter | MoFu | Javascript & Ajax | 2 | 18.09.2009 10:09 |
Ajax und InternetExplorer | M@tes | Javascript & Ajax | 1 | 28.05.2009 18:45 |
Ajax ReadyState 3 | kevink | Javascript & Ajax | 2 | 30.04.2007 17:19 |
Buchrezension: AJAX - Frische Ansätze für das Webdesign | Flocke | Ressourcen | 2 | 01.11.2005 23:08 |