Get Query String Parameter Values From URL Using JavaScript
We can get query string parameters in JavaScript without using 3rd party js like jQuery etc by using
- Simple JavaScript code
- ECMAScript 6
- JavaScript URLSearchParams API
Javascript Query string URL parameters are very useful while doing CRUD operations on the server side.& from client side also we might need to get query string parameters from URL using JavaScript & modify them.
On this page
Using JavaScript split() & regex.exec() method
To get query string parameters in JavaScript,use JavaScript split() function.Further using JavaScript regular expression we can get parameters in key value pair.
Take an example of sample url https://www.arungudelli.com?param1=1¶m2=2
the query string parameters in the given url are param1=1¶m2=2
var url ="https://www.arungudelli.com?param1=1¶m2=2";
var query_string_paramter = url.split("?")[1];
//returns param1=1&param2=2, removing ?
Now we will use the regular expression to match pattern (“a=b”) and return paramters in json key value pair.
{param1:1,param2:2}
And if you are not passing URL parameter, it will take the current url from window.location
and window.location.search
will return query string parameter.
Full code snippet is as follows
/**
* This function getQueryStringParameters takes url as parmater
* and returns
* parameters name and value in JSON key value format
* @parameter {String} url
* (if url is not passed it takes the current url
* from window.location.href)
*
**/
function getQueryStringParameters(url){
var urlParams={},
match,
additional = /\+/g,
// Regex for replacing additional symbol with a space
search = /([^&=]+)=?([^&]*)/g,
decode =
function (s)
{ return decodeURIComponent(s.replace(additional, " ")); },
query;
if (url){
if(url.split("?").length>0){
query = url.split("?")[1];
}
}else{
url = window.location.href;
query = window.location.search.substring(1);
}
while (match = search.exec(query)){
urlParams[decode(match[1])] = decode(match[2]);
}
return urlParams;
}
using Javascript Split & reduce method methods
In JavsScript,to get the query string parameters in JSON format use the following ES6(ECMAScript 6) Code snippet
/**
* This ES6(ECMAScript) function getQueryStringParameters takes url
* as parmater and returns
* parameters name and value in JSON key value format
* @parameter {String} url
* (if url is not passed it takes the current url
* from window.location.href)
*
**/
const getQueryStringParameters = url => {
if (url){
if(url.split("?").length>0){
query = url.split("?")[1];
}
}else{
url = window.location.href;
query = window.location.search.substring(1);
}
return (/^[?#]/.test(query) ? query.slice(1) : query)
.split('&')
.reduce((params, param) =>
{
let [ key, value ] = param.split('=');
params[key] = value?decodeURIComponent(value.replace(/\+/g, ' ')):'';
return params;
}, { });
};
Using JavaScript URLSearchParams API
To get query string parameter values in JavaScript, We can use UrlSearchParmas API in JavaScript.
The string parsing mechanism is ugly and old way of doing getting query string parameter values.
If you are using latest browsers like Firefox 44+, Opera 36+, Edge 17+, Safari 10.3+ and Chrome 49+ you can use UrlSearchParams
API in Javascript.
Use the following code snippet to get query string parameters from current URL
/* This URLSearchParams takes the query string as parameter */
var parameters = new URLSearchParams(window.location.search);
For example, if the current url is
https://www.arungudelli.com?param1=1¶m2=2
Now you can get parameter values by name using get(key)
method of URLSearchParams
API.
parameters.get('param1') //1
parameters.get('param2') //2
Or we can get parameters object by using searchParams
property of URL object.
var parameters = new URL(window.location).searchParams;
parameters.get('param1') //1
parameters.get('param2') //2
If you want to get query string parameter for any url, Use the following JavaScript code snippet
var url = new URL('https://www.arungudelli.com?param1=1¶m2=2');
var parameters = new URLSearchParams(url.search);
// or by using searchParams property
var parameters = url.searchParams;
parameters.get('param1') //1
parameters.get('param2') //2
Apart from get(key) method UrlSearchParams also have methods like has(key) , getAll(key) , append(key,value), toString().
console.log(parameters.has('param1')); // true
console.log(parameters.get('param1')); // "1"
console.log(parameters.getAll('param1')); // ["1"]
console.log(parameters.toString()); // "param1=1&param2=2"
console.log(parameters.append('param3', '3'));
// "?param1=1&param2=2&param3=3"
And we can loop through parameter keys using keys()
method , values using values()
method and key values using entries()
method
var keys = parameters.keys();
for(key of keys) {
console.log(key);
}
// param1
// param2
for(val of parameters.values()){console.log(val)}
//1
//2
var entries =parameters.entries();
for(pair of entries) { console.log(pair ); }
//["param1", "1"]
//["param2", "2"]
Get URL parameter values by name in JavaScript
To get URL parameter values by name in JavaScript, use the following code snippet.
/**
* This function JavascriptgetURLParameterValues
* takes parameter name and url
* as parmaters and returns parameter value
* @parameter {String} parameterName
* @parameter {String} url
* (if url is not passed it takes the current url
* from window.location.href)
**/
function JavascriptgetURLParameterValues(parameterName, url) {
if (!url) url = window.location.href;
parameterName= parameterName.replace(/[\[\]]/g, "\\$&");
var regularExpression =
new RegExp("[?&]" + parameterName + "(=([^&#]*)|&|#|$)"),
results = regularExpression.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
Now we can pass the parameter name to the above method to get URL parameter values.
var url =
'https://www.arungudelli.com?parameter1=1¶meter=2&¶meter=2';
JavascriptgetURLParameterValues("parameter1");//1
JavascriptgetURLParameterValues("parameter2");//2
JavascriptgetURLParameterValues("parameter3");//3
With the above function, you can get individual URL parameter values by passing the parameter name and URL. If you have any other snippets please do share