HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

Getting a value from a query string

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
querygettingvaluefromstring

Problem

I have a URL in this format:

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 ?, 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.