Ajax optimal einsetzen

Wie bereits erwähnt, muss eine Methode definiert werden, die aufgerufen werden soll, wenn sich der Abfragezustand ändert. Dies geschieht, indem man die Eigenschaft onreadystatechange setzt. Man beachte, dass es dabei um eine Zustandsänderung geht, nicht um eine Vervollständigung – das sind zwei völlig unterschiedliche Dinge. Am besten lässt sich dies an einem Beispiel zeigen, das alle bisherigen Ausführungen einschließt. Das Folgende soll in einer Datei abgelegt werden:

.XMLHTTP"); } catch (failed) { xmlhttp = false; } } } function goAJAX() { alert("Initial Ready State is:"+xmlhttp.readyState); xmlhttp.onreadystatechange = myReturnMethod; xmlhttp.open("GET", "another_file.html", true); xmlhttp.send(null); } function myReturnMethod() { alert("New Ready State is:"+xmlhttp.readyState); }


In der abgefragten Datei kann dies mit allem was man will ersetzt werden, der Inhalt wird noch nicht verwendet werden, es soll nur gefunden werden können.

Es ist zu bemerken, dass bei erfolgter Eingabe mehrfach die Meldung readystate erscheint und schließlich angezeigt wird, dass der readyState gleich 4 ist. Verschiedene Browser verfahren hier in unterschiedlicher Weise, in Safari wird nett von 0-4 gezählt, aber in Firefox erscheint die 1 zweimal und die 0 nur im ersten Durchlauf. Hier interessiert zum Glück lediglich der readyState 4, doch der Vollständigkeit halber hier die Bedeutung der verschiedenen Zahlen:

  • 0: nicht initialisiert – das Objekt enthält keine Daten, open wurde noch nicht aufgerufen
  • 1: das Objekt lädt seine Daten – send wurde noch nicht aufgerufen
  • 2: geladen – die Abfrage wurde gesendet
  • 3: interaktiv – die Abfrage wird bearbeitet, erste Daten sind unter Umständen verfügbar, die Daten sind jedoch nicht vollständig und daher unsicher
  • 4: vollständig – die Abfrage ist vollständig und die Daten können sicher verwendet werden

Dank dieser Informationen kann nun die Methode myReturnMethod so geändert werden, dass der Hinweis nur erscheint, wenn die Abfrage vollständig ist.

Abfragestatus

Unter Verwendung des letzten Codes werden nun die URL-Parameter der Methode open geändert und auf eine Datei gelegt, die nicht existiert.

Wird der Code nun ausgeführt, ist das Ergebnis genau dasselbe wie beim alten Code – was ist hier geschehen?

Wäre dies eine normale http-Abfrage würde man eine 404-Fehlermeldung erwarten – unter Ajax gilt dasselbe in Bezug auf die Eigenschaft status. Diese Eigenschaft kann nur gelesen werden und enthält den http-Statuscode der Abfrage, im Falle der vorliegenden Datei lautet dieser 404. Unter Ajax gelten die gleichen Statuscodes, die man bereits von normalen http-Abfragen her kennt. (Damit dies richtig funktioniert, sollte man die Seite von einem http-Server anfordern; wird sie aus dem Dateisystem gelesen, ist der Statuscode immer undefiniert.)

Es muss daher ein if-Statement hinzugefügt werden, das überprüft, ob eine Abfrage erfolgreich war. Wenn ja, wird der Antwortcode 200 gesendet. War sie nicht erfolgreich, muss eine Reaktion auf den Fehler möglich sein.

Page: 1 2 3 4 5

ZDNet.de Redaktion

Recent Posts

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

4 Tagen ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

4 Tagen ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

4 Tagen ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

1 Woche ago

Microsoft steigert Umsatz und Gewinn im dritten Fiskalquartal

Aus 61,9 Milliarden Dollar generiert das Unternehmen einen Nettoprofit von 21,9 Milliarden Dollar. Das größte…

1 Woche ago

Digitalisierung! Aber wie?

Mehr Digitalisierung wird von den Unternehmen gefordert. Für KMU ist die Umsetzung jedoch nicht trivial,…

1 Woche ago