patternjavascriptMinor
Getting a value from a query string
Viewed 0 times
querygettingvaluefromstring
Problem
I have a URL in this format:
I need the values of
It’s working, but is there a better way to access the same, given the same URL?
http://localhost:57279/AssociateCaseDetails?UId=176948&caseID=1123
I need the values of
UId and CaseID:var UId =window.location.href.split("?")[1].split("&")[0].split("=")[1];It’s working, but is there a better way to access the same, given the same URL?
Solution
Instead of splitting from the
Since it includes the
Then you can do:
From
I have to add that this only works for 1-level query string. Stuff like arrays (
?, you can use location.search. It returns everything from (and including) the ? until the end of the query string. If there's a hash, it stops right before #.Since it includes the
?, you can do location.search.slice(1) to get the string without the ?.Then you can do:
var queries = location.search
.slice(1)
.split('&')
.reduce(function(carry, query){
var queryPair = query.split('=');
carry[queryPair[0]] = queryPair[1];
return carry;
},{});From
?foo=foovalue&bar=barvalue, you can get something like:var queries = {
foo: 'foovalue',
bar: 'barvalue',
}I have to add that this only works for 1-level query string. Stuff like arrays (
foo[]=foo0&foo[]=foo1) and key-value pairs (foo[bar]=bar&foo[baz]=baz) isn't covered in this logic.Code Snippets
var queries = location.search
.slice(1)
.split('&')
.reduce(function(carry, query){
var queryPair = query.split('=');
carry[queryPair[0]] = queryPair[1];
return carry;
},{});var queries = {
foo: 'foovalue',
bar: 'barvalue',
}Context
StackExchange Code Review Q#84954, answer score: 9
Revisions (0)
No revisions yet.