Skip to main content

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;
            }
        }
    }
})()