seeseekey.net - Invictus Deus Ex Machina

Wenn man in Java­script einem PHP Skript etwas schi­cken möchte so kann man dies per GET Methode machen. Das bedeu­tet das die Para­me­ter an die URL des PHP Skrip­tes ange­han­gen wer­den. Für grö­ßere Daten­men­gen ist die Methode POST aller­dings wesent­lich sinn­vol­ler. Das Pro­blem ist das man die Daten dann mit­tels eines For­mu­lars sen­den muss. Das macht nicht wirk­lich Spaß. Ein­fa­cher geht es mit der Methode post­ToUrl wel­che ich auf Stack Over­flow gefun­den habe:

function postToUrl(path, params, method)
{
 method = method || "post"; // Standardmethode wird auf POST gesetzt, wenn keine andere angegeben

 var form = document.createElement("form");
 form.setAttribute("method", method);
 form.setAttribute("action", path);

 for(var key in params) {
 var hiddenField = document.createElement("input");
 hiddenField.setAttribute("type", "hidden");
 hiddenField.setAttribute("name", key);
 hiddenField.setAttribute("value", params[key]);

 form.appendChild(hiddenField);
 }

 document.body.appendChild(form);
 form.submit();
}

Die Funk­tion funk­tio­niert dabei auch im all­seits belieb­ten Inter­net Explo­rer ;)

Update: Mit dem Inter­net Explo­rer 8 macht das ganze Pro­bleme. Die umge­schrie­bene Funk­tion mit der es in allen Brow­sern funk­tio­nie­ren sollte sieht dann so aus:

function postToUrl(path, params, method) 
{
 method = method || "post"; // Set method to post by default, if not specified.

 // The rest of this code assumes you are not using a library.
 // It can be made less wordy if you use one.
 //var form = document.createElement("select");
 var form = document.createElement("form");
 form.setAttribute("method", method);
 form.setAttribute("action", path);

 for(i=0; i<params.length; i++)
 {
 var key=i;
 
 var hiddenField = document.createElement("input");
 hiddenField.setAttribute("type", "hidden");
 hiddenField.setAttribute("name", key);
 hiddenField.setAttribute("value", params[key]);

 form.appendChild(hiddenField);
 }

 document.body.appendChild(form);    // Not entirely sure if this is necessary
 form.submit();
 return false;
}

Wei­tere Infor­ma­tio­nen gibt es unter:
http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>