Problematik
Eine Möglichkeit, Daten zwischen Webseiten zu übertragen, ist der GET-Parameterstring. So übertragene Daten sind sowohl für server-seitige Scripts als auch für JavaScripts zugänglich. In JavaScript gibt es allerdings nichts, was etwa dem globalen $_GET-Array in PHP entspricht. Es gibt lediglich die Objekteigenschaft location.search, welche den kompletten GET-String mitsamt einleitendem ?-Zeichen bereitstellt. Grund genug, Funktionen parat zu haben, die einen bequemen Zugriff auf einzelne GET-Parameter erlauben.
Code
function get_GET_params() { var GET = new Array(); if(location.search.length > 0) { var get_param_str = location.search.substring(1, location.search.length); var get_params = get_param_str.split("&"); for(i = 0; i < get_params.length; i++) { var key_value = get_params[i].split("="); if(key_value.length == 2) { var key = key_value[0]; var value = key_value[1]; GET[key] = value; } } } return(GET); } function get_GET_param(key) { var get_params = get_GET_params(); if(get_params[key]) return(get_params[key]); else return false; }
Erläuterungen
Das Set besteht aus zwei Funktionen. Die Funktion get_GET_params() extrahiert alle übergebenen GET-Parameter in einen assoziativen Array namens GET, den sie am Ende zurückgibt. Dazu zerlegt sie zunächst mit split() den Teil von location.search ohne das einleitende Fragezeichen in die einzelnen Parameter, die im GET-Parameter-String bekanntlich durch &-Zeichen getrennt werden. Die so entstandenen Einzelparameter-Strings werden in einem Array namens get_params gespeichert. In einer for-Schleife werden die Elemente dieses Arrays anschließend weiterverarbeitet, um den eigentlich gewünschten Array GET zu erzeugen. Jeder GET-Parameter stellt bekanntlich ein Name-Wert-Paar dar, wobei Name und Wert durch ein Gleichheitszeichen (=) getrennt sind. Durch erneute Anwendung von split() werden Name und Wert in den Arbeitsvariablen key und value ermittelt. Mit der Zuweisung GET[key] = value; wird der assoziative Rückgabe-Array gefüttert.
Bei einer URL wie http://www.example.org/?pagename=sitemap&mode=accessible&user=vistor ermittelt die Funktion get_GET_params() folgende Array-Daten:
GET['pagename'] = "sitemap";
GET['mode'] = "accessible";
GET['user'] = "visitor";
Die zweite Funktion get_GET_param() dient dazu, direkt den Wert eines bestimmten GET-Parameter abzufragen, dessen Namen bekannt ist. Beispiel: pagename = get_GET_param("pagename");. Die Funktion ruft ihrerseits die Funktion get_GET_params() auf, um den assoziativen Array aller GET-Parameter zu erhalten. Ist der Parameter mit dem gewünschten Namen darin enthalten, wird er zurückgegeben. Ist er nicht vorhanden, wird false zurückgegeben.
