URL Get Parameter parsen
Mit diesem Snippet kann man die GET Parameter - also alles nach dem ? am Ender einer URL leicht in Javascript auslesen
Die Klasse kennt genau 2 Methoden:
args.getJSONObject() | Liefert ein JSON-Objekt von allen Argumenten | JSON-Objekt |
args.getValue(KEY,[DEFAULTVALUE]) | Liefert den Wert für einen Parameter. z.B. index.html?foo=bar würde bei dem Aufruf args.getValue('foo') den String "bar" liefern. Fehlt der Wert, kann mit dem zweiten Parameter ein Vorgabewert gesetzt werden. | String oder null, wenn der Paramter nicht angegeben wurde. |
/**
* Klasse zum Parsen von GET Parametern
**/
var args = args ||
(function(){
function getArgsLength() {
return argsToArray().length
}
function argsToArray() {
return location.search.replace("?","").split("&");
}
function isJSON(string) {
string = decodeURI(string);
try {
JSON.parse(string)
} catch(e) {
if(e instanceof SyntaxError) return false;
};
return true;
}
function parseVarTypes(variable) {
if ( parseFloat(variable) ) {
return parseFloat(variable)
} else if ( /^(true|false)$/i.test(variable) ) {
return JSON.parse (variable);
} else if (isJSON(variable)) {
return JSON.parse(decodeURI(variable));
} else {
return variable;
}
}
function _getJSONObject(item) {
item = item || null;
let params=argsToArray();
let paramsLength= getArgsLength()
let parsedParams = {};
if ( location.href.indexOf("?") ==-1 ) return null;
for (let i=0;i<paramsLength;i++) {
keyValuePair=params[i].split("=");
parsedParams[keyValuePair[0]]=parseVarTypes(keyValuePair[1]);
}
if (item === null) {
return parsedParams;
} else
if (typeof (parsedParams[item]) !== "undefined") {
return parsedParams[item];
} else
{
console.warn ("Verlangtes Argument '" + item + "' wurde nicht übergeben.");
return null;
}
}
return {
/* Liefert ein JSONObjekt aller aktuell übergebenen GET-Parameter */
getJSONObject:function() {
return _getJSONObject();
},
/* Liefert genau einen Wert vom Typ String für genau einen GET-Arameter. Liefert NULL, wenn kein Std WErt gesetzt ist. */
getValue:function (key,defaultVal=null) {
if (this.hasKey(key) ) {
return _getJSONObject(key);
} else
{
return defaultVal;
}
},
hasKey:function(keyname) {
if ( _getJSONObject().hasOwnProperty(keyname) ) {
return true;
} else
{
return false;
}
}
}
})()
No Comments