Per Javascript Parameter per POST an ein PHP Skript schicken

Wenn man in Javascript einem PHP Skript etwas schicken möchte so kann man dies per GET Methode machen. Das bedeutet das die Parameter an die URL des PHP Skriptes angehangen werden. Für größere Datenmengen ist die Methode POST allerdings wesentlich sinnvoller. Das Problem ist das man die Daten dann mittels eines Formulars senden muss. Das macht nicht wirklich Spaß. Einfacher geht es mit der Methode postToUrl welche ich auf Stack Overflow gefunden 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 Funktion funktioniert dabei auch im allseits beliebten Internet Explorer ;)

Update: Mit dem Internet Explorer 8 macht das ganze Probleme. Die umgeschriebene Funktion mit der es in allen Browsern funktionieren 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;
}

Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit

Musik mal anders

Die Stromrechnung des Tesla Orchester ist sicherlich etwas höher als die anderer Orchester. Das dürfte dem geschuldet sein, das sie Ressonanztransformatoren zum musizieren nutzen. Und so sieht das ganze aus:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=f53Vu_SUMDw

Oder mal ganz klassisch von Lady Gaga:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=NzLC1lVWDSk

Weitere Informationen gibt es unter:
http://www.golem.de/1105/83794.html

Bitcoin in der Presse

Bitcoin ist eine dezentrale und virtuelle Währung. In letzter Zeit ist Bitcoin erstaunlich häufig in der Presse zu finden. So zum Beispiel auf Golem (http://www.golem.de/1105/83829.html) oder auf Spiegel Online (http://www.spiegel.de/netzwelt/netzpolitik/0,1518,765382,00.html). Das sieht für mich so aus als ob Bitcoin sich im Aufwind befindet :)

Weitere Informationen gibt es unter:
http://www.bitcoin.org/
http://de.wikipedia.org/wiki/Bitcoin

HTML Tabelle in CSV

Manchmal ist es ganz praktisch wenn man aus einer HTML Tabelle eine CSV erstellen kann. Dazu gibt es unter http://www.codekeep.net/snippets/ec9f4704-b88a-486a-98f9-896de6afb021.aspx auch ein schönes Beispiel. Das Problem an diesem Beispiel ist das es nicht funktioniert. Einige Elemente sehen nach jQuery aus, so das man es ohne diese Bibliothek nicht benutzen kann. Mit „normalem“ Javaskript sieht das ganze dann so aus:

function tableRowsToCSV(theRows) 
{
 // Converts table rows into a csv stream
 var csv = "";
 for (var r=0;r<theRows.length;r++) {
 var csvRow = "";

 var theCells = theRows.item(r).cells;
 for (var c=0;c<theCells.length;c++) {
 var cellData="";
 cellData = theCells.item(c).textContent;
 //alert(cellData);
 if (cellData.indexOf(",") != -1) { 
 cellData = "'"+cellData+"'"; 
 }
 csvRow += ","+cellData;
 }
 if (csvRow != "") { 
 csvRow = csvRow.substring(1,csvRow.length); 
 }
 csv += csvRow+"\n";
 }
 return csv;
}

Der Aufruf der Funktion könnte dann zum Beispiel so aussehen:

var csvText = tableRowsToCSV(document.getElementsByTagName("tr"));

Diesen Text kann man dann in Javaskript weiterverwenden oder ihn z.B. an ein PHP Skript (per POST) schicken, welches das ganze dann zum Download anbietet.

Das Invertika Update im Mai

Auch im Mai hat sich bei Invertika wieder einiges getan. Für diejenigen welche Invertika nicht kennen, dabei handelt es sich um ein freies Open Source 2D-MMORPG. In diesem Update wurden viele Maps systematisch auf Fehler überprüft und diese korrigiert. Daneben erwarten den Spieler einige neue Quests, sowie neue NPCs wie z.B. in Quakari. Durch die Quests kommt der Spieler auch an einige neue Items welche ihn interessieren könnten.

Im Norden der aktuellen Weltkarte kann man den gewachsenen Irrwald bewundern, welcher bis zum nächsten Update sicherlich noch an Größe gewinnen wird. Lauria hat nun Innenräume, welche die Spieler besichtigen können und bald mit Leben erfüllt werden. Auf den Karten wurde das Wegesystem ausgebaut, so das der Spieler nun besser von A nach B findet. Desweiteren wurde auch das Theater weiter ausgebaut (und kann nun betreten werden) so das es bald seinen Betrieb aufnehmen wird.

In den Skripten wurden wieder einige Rechtschreibfehler sowie kleinere Ungereimtheiten bei einigen Quests behoben. Der Entwicklertisch hat auch einige neue Mitglieder was sich auch im Invertika Projekt niederschlägt :) Einige Orte sind nun mit Orteingangsschildern ausgestattet so das man weiß wo man sich aufhält.

Wer jetzt neugierig geworden ist kann das Invertika Projekt unter http://invertika.org oder im IRC Channel #invertika (im Freenode Netzwerk) besuchen.