JavaScript Ajax Beispiel 3: POST-Request

Neben der Möglichkeit, Parameterdaten per GET-Methode an einen Webservice zu senden, gibt es auch eine POST-Variante. Die Parmeterdaten, die an den Webservice geschickt werden, werden bei einem POST-Request nicht über die URL verschickt, sondern über das Request-Objekt des Aufrufs. Das auf dieser Seite folgende Ajax-Beispiel soll diese Vorgehensweise kurz demonstrieren.

Ein Teil der unten stehenden Funktionen entspricht dabei denen des letzten Beispiels. Die Ausgabe der abgerufenen Nutzdaten erfolgt auch hier wieder über einen Dialog des Window-Objekts, genauer gesagt mit Hilfe der JavaScript-Methode Alert().

Im Gegensatz zum GET-Beispiel werden hier aber nicht die Zeichenketten der URL und der Parameter miteinander verknüpft und in der URL an den Server übertragen, sondern separat über das Request-Objekt versendet. Dazu sind zwei Schritte nötig: Zum Einen wird in der Funktion sendPostRequest der Content-Type entsprechend eingestellt, und im darauf folgenden Schritt werden die Parameterdaten an die XMLHttpRequest-Methode send übergeben und durch diese im Request-Objekt an den Webserver verschickt.

Zum Abbruch eines evtl. noch laufenden Ajax-Request wird, im Falle eines vorzeitigen Schließens des Browserfensters, auch hier wieder das Schwester-Event des onLoad-Event genutzt, um die laufende Anfrage zu beenden.

<a href="javascript:sendPostRequest ('name=Wilhelm&alter=52')" title="">POST Request senden</a>
<script language="javascript" type="text/javascript">
<!-- // JavaScript-Bereich für ältere Browser auskommentieren
// Funktion erzeugt, in Abhängigkeit des benutzten Browsers, ein
// XMLHttpRequest-Objekt.
function getRequestObject () {
  // Wenn es sich bei dem vom Benutzer verwendeten Browser
  // um einen Internet Explorer handelt, wird das Request-Objekt
  // per ActiveX geholt.
  if (navigator.appName == "Microsoft Internet Explorer")
    return new ActiveXObject ("Microsoft.XMLHTTP");
  else
    // Bei anderen Browsern liegt das Request-Objekt direkt
    // unterhalb des Window-Objekts.
    return new XMLHttpRequest ();
}

// POST-Request an einen Webservice senden.
function sendPostRequest (parameter) {
  // POST-Verbindung zum Webservice öffnen
  // Erster Parameter der Methode ist auch hier wieder die Übertragungsmethode.
  // Als zweiten Parameter erwartet die Methode die URL zum Webservice.
  // Der dritte Parameter schaltet die asynchrone Übertragung ein.
  httpRequestObject.open ('POST', 'httprequesttest.php', true);
  // Event-Handler zur Reaktion auf Statusänderungen während des
  // Requests einsetzen.
  httpRequestObject.onreadystatechange = handleResponse;
  // Content-Type für Parameterübertragung per POST setzen
  httpRequestObject.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');
  // POST Request abschicken
  // Die Parameter werden der Send-Methode des Request-Objekts zur
  // Übertragung übergeben.
  httpRequestObject.send (parameter);
}

// Aufgabe der Funktion handleResponse, dem für Statusänderungen zuständigen Event-Handler,
// ist es die vom Webservice gelieferten Daten auszugeben.
function handleResponse () {
  // Wurde der Request inzwischen erfolgreich (readyState 4) abgeschlossen und
  // hat der Server mit OK (Status 200) geantwortet?
  if (httpRequestObject.readyState == 4 && httpRequestObject.status == 200) {
    // Vor Server gelieferte Daten in Variable speichern...
    var response = httpRequestObject.responseText;
    // und dann in einem Alert-Fenster ausgeben.
    alert (response);
  }
}

// HttpRequestObject per oben definierter Funktion erzeugen und
// in der Variablen speichern, damit künftig auf das Objekt zugegriffen
// werden kann.
var httpRequestObject = getRequestObject ();

// Wenn das Dokument geschlossen wird, müssen noch nicht beendete
// Requests abgebrochen werden.
window.onunload = httpRequestObject.abort ();
// -->
</script>

POST Request senden

Letzte Posts aus unserem Forum

Stream musik

Hallo, ich bin auf der Suche nach einem Script, mit dem ich einen Leser für Audio-Spuren in eine Html-Webseite einfügen kann. Ich brauche dabei ... » mehr

von Finlay am Sonntag, 22. Januar 2012 22:52 in JavaScript - bisher 1 Antwort
Letzter Beitrag: Montag, 23. Januar 2012 17:02 von alm

Hallo, wenn es um einen MP3-Player geht, dann sollte jplayer das Richige sein. Einfach mal den Suchschlitz der Suchmaschine Deiner Wahl nutzen. ... » mehr

Überbelnd effect in javascript gallerie

ich habe hier einie gallerie die funktioniert problem los aber hat noch kein über belnd effect jedoch würde ich diesen gerne einfügen aber ich habe ... » mehr

von faebe am Freitag, 20. Januar 2012 20:19 in JavaScript - noch nicht beantwortet

XML per JavaScript verarbeiten - IE

Hallo! Vielen Dank für das super kommentierte Script-Beispiel zur Weiterverarbeitung von XML-Dateien per JavaScript: ... » mehr

von gn0me am Freitag, 11. März 2011 19:03 in JavaScript - noch nicht beantwortet

Galerie Erweiterung

Hi, zu erst mal ein Lob an Eure Galerie. Nun habe ich allerdings eine Frage um die Galerie eventuell zu erweitern. Derzeit wird auf meiner Seite ... » mehr

von G-RuN am Dienstag, 25. Januar 2011 17:13 in JavaScript - bisher 8 Antworten
Letzter Beitrag: Dienstag, 1. Februar 2011 17:11 von G-RuN

Hat sich erledigt. Mir haben noch die Zuweisung von der Variablen anzahl_bilder und anzahl_thumbnails gefehlt. Grüße, ... » mehr

bei submit ein neues Fenster öffnen

Hallo, ich habe hier ein kleines Problem und ... » mehr

von Kallchen am Freitag, 14. Januar 2011 23:07 in JavaScript - bisher 3 Antworten
Letzter Beitrag: Samstag, 15. Januar 2011 12:47 von alm

window.location = "_blankeineseite.html"; Das funktioniert auf keinen Fall. Die Location-Eigenschaft muss eine URL enthalten und wird bei ... » mehr



¬ Insolvenzrecht