Created
May 13, 2017 06:06
-
-
Save thisnameissoclever/e21d08cea18cc4d9dadaf702cc291b4c to your computer and use it in GitHub Desktop.
This ServiceNow Client Script returns an object consisting of a property for each URI parameter, and its' value.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Get the values of each URI param as properties of an object (name-value pairs). | |
* @param url | |
* @returns {{}} | |
* @example - In the URL www.google.com/page?urip=pickles&otheruriparam=bananas, you could use getAllUrlParams().urip to get "pickles". | |
*/ | |
function getAllUrlParams(url) { | |
// get query string from url (optional) or window | |
var queryString = url ? url.split('?')[1] : window.location.search.slice(1); | |
// we'll store the parameters here | |
var obj = {}; | |
// if query string exists | |
if (queryString) { | |
// stuff after # is not part of query string, so get rid of it | |
queryString = queryString.split('#')[0]; | |
// split our query string into its component parts | |
var arr = queryString.split('&'); | |
for (var i = 0; i < arr.length; i++) { | |
// separate the keys and the values | |
var a = arr[i].split('='); | |
// in case params look like: list[]=thing1&list[]=thing2 | |
var paramNum = undefined; | |
var paramName = a[0].replace(/\[\d*\]/, function(v) { | |
paramNum = v.slice(1, -1); | |
return ''; | |
}); | |
// set parameter value (use 'true' if empty) | |
var paramValue = typeof(a[1]) === 'undefined' ? true : a[1]; | |
// (optional) keep case consistent | |
paramName = paramName.toLowerCase(); | |
paramValue = paramValue.toLowerCase(); | |
// if parameter name already exists | |
if (obj[paramName]) { | |
// convert value to array (if still string) | |
if (typeof obj[paramName] === 'string') { | |
obj[paramName] = [obj[paramName]]; | |
} | |
// if no array index number specified... | |
if (typeof paramNum === 'undefined') { | |
// put the value on the end of the array | |
obj[paramName].push(paramValue); | |
} | |
// if array index number specified... | |
else { | |
// put the value at that index number | |
obj[paramName][paramNum] = paramValue; | |
} | |
} | |
// if param name doesn't exist yet, set it | |
else { | |
obj[paramName] = paramValue; | |
} | |
} | |
} | |
return obj; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment