How to get URL parameter using jQuery or plain JavaScript?

JqueryUrlParametersQuery StringQuerystringparameter

Jquery Problem Overview


I have seen lots of jQuery examples where parameter size and name are unknown.

My URL is only going to ever have 1 string:

http://example.com?sent=yes

I just want to detect:

  1. Does sent exist?
  2. Is it equal to "yes"?

Jquery Solutions


Solution 1 - Jquery

Best solution here.

var getUrlParameter = function getUrlParameter(sParam) {
	var sPageURL = window.location.search.substring(1),
		sURLVariables = sPageURL.split('&'),
		sParameterName,
		i;

	for (i = 0; i < sURLVariables.length; i++) {
		sParameterName = sURLVariables[i].split('=');

		if (sParameterName[0] === sParam) {
			return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
		}
	}
    return false;
};

And this is how you can use this function assuming the URL is,
http://dummy.com/?technology=jquery&blog=jquerybyexample.

var tech = getUrlParameter('technology');
var blog = getUrlParameter('blog');

Solution 2 - Jquery

Solution from 2022

We have: http://example.com?sent=yes

let searchParams = new URLSearchParams(window.location.search)

Does sent exist?

searchParams.has('sent') // true

Is it equal to "yes"?

let param = searchParams.get('sent')

and then just compare it.

Solution 3 - Jquery

jQuery code snippet to get the dynamic variables stored in the url as parameters and store them as JavaScript variables ready for use with your scripts:

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results==null) {
       return null;
    }
    return decodeURI(results[1]) || 0;
}

example.com?param1=name&param2=&id=6

$.urlParam('param1'); // name
$.urlParam('id');        // 6
$.urlParam('param2');   // null

example params with spaces

http://www.jquery4u.com?city=Gold Coast
console.log($.urlParam('city'));  
//output: Gold%20Coast



console.log(decodeURIComponent($.urlParam('city'))); 
//output: Gold Coast

Solution 4 - Jquery

I always stick this as one line. Now params has the vars:

params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v})

multi-lined:

var params={};
window.location.search
  .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) {
    params[key] = value;
  }
);

as a function

function getSearchParams(k){
 var p={};
 location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v})
 return k?p[k]:p;
}

which you could use as:

getSearchParams()  //returns {key1:val1, key2:val2}

or

getSearchParams("key1")  //returns val1

Solution 5 - Jquery

Yet another alternative function...

function param(name) {
    return (location.search.split(name + '=')[1] || '').split('&')[0];
}

Solution 6 - Jquery

May be its too late. But this method is very easy and simple

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.url.js"></script>

<!-- URL:  www.example.com/correct/?message=done&year=1990 -->

<script type="text/javascript">
$(function(){
    $.url.attr('protocol') 	// --> Protocol: "http"
    $.url.attr('path') 		// --> host: "www.example.com"
    $.url.attr('query') 	    // --> path: "/correct/"
    $.url.attr('message') 	    // --> query: "done"
    $.url.attr('year') 		// --> query: "1990"
});

UPDATE
Requires the url plugin : plugins.jquery.com/url
Thanks -Ripounet

Solution 7 - Jquery

Using URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

Be careful about the compatibility (Mostly it's fine, but IE and Edge, may be different story, check this for compatible reference: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)

Solution 8 - Jquery

Or you can use this neat little function, because why overcomplicated solutions?

function getQueryParam(param, defaultValue = undefined) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
            return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
        })
    return defaultValue
}

which looks even better when simplified and onelined:

tl;dr one-line solution

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})

result:
queryDict['sent'] // undefined or 'value'

But what if you have got encoded characters or multivalued keys?

You better see this answer: How can I get query string values in JavaScript?

Sneak peak

"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"

Solution 9 - Jquery

This one is simple and worked for me

$.urlParam = function(name){
	var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
	return results[1] || 0;
}

so if your url is http://www.yoursite.com?city=4

try this

console.log($.urlParam('city'));

Solution 10 - Jquery

Perhaps you might want to give Dentist JS a look? (disclaimer: I wrote the code)

code:

document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"

with Dentist JS, you can basically call the extract() function on all strings (e.g., document.URL.extract() ) and you get back a HashMap of all parameters found. It's also customizable to deal with delimiters and all.

Minified version < 1kb

Solution 11 - Jquery

I hope this will help.

 <script type="text/javascript">
   function getParameters() {
     var searchString = window.location.search.substring(1),
       params = searchString.split("&"),
       hash = {};
    
     if (searchString == "") return {};
     for (var i = 0; i < params.length; i++) {
       var val = params[i].split("=");
       hash[unescape(val[0])] = unescape(val[1]);
     }

     return hash;
   }

    $(window).load(function() {
      var param = getParameters();
      if (typeof param.sent !== "undefined") {
        // Do something.
      }
    });
</script>

Solution 12 - Jquery

This might be overkill, but there is a pretty popular library now available for parsing URIs, called URI.js.

Example

var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow";
var components = URI.parse(uri);
var query = URI.parseQuery(components['query']);
document.getElementById("result").innerHTML = "URI = " + uri;
document.getElementById("result").innerHTML += "<br>technology = " + query['technology'];

// If you look in your console, you will see that this library generates a JS array for multi-valued queries!
console.log(query['technology']);
console.log(query['blog']);

<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.17.0/URI.min.js"></script>

<span id="result"></span>

Solution 13 - Jquery

function GetRequestParam(param)
{
	var res = null;
	try{
		var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI
		var ar = qs.split('&');
		$.each(ar, function(a, b){
			var kv = b.split('=');
			if(param === kv[0]){
				res = kv[1];
				return false;//break loop
			}
		});
	}catch(e){}
	return res;
}

Solution 14 - Jquery

Try this working demo http://jsfiddle.net/xy7cX/

API:

This should help :)

code

var url = "http://myurl.com?sent=yes"

var pieces = url.split("?");
alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces));

Solution 15 - Jquery

So simple you can use any url and get value

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

Usage Example

// query string: ?first=value1&second=&value2
var foo = getParameterByName('first'); // "value1"
var bar = getParameterByName('second'); // "value2" 

Note: If a parameter is present several times (?first=value1&second=value2), you will get the first value (value1) and second value as (value2).

Solution 16 - Jquery

There's this great library: https://github.com/allmarkedup/purl

which allows you to do simply

url = 'http://example.com?sent=yes';
sent = $.url(url).param('sent');
if (typeof sent != 'undefined') { // sent exists
   if (sent == 'yes') { // sent is equal to yes
     // ...
   }
}

The example is assuming you're using jQuery. You could also use it just as plain javascript, the syntax would then be a little different.

Solution 17 - Jquery

http://example.com?sent=yes

Best solution here.

function getUrlParameter(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(location.href);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, '    '));
};

With the function above, you can get individual parameter values:

getUrlParameter('sent');

Solution 18 - Jquery

This will give you a nice object to work with

    function queryParameters () {
        var result = {};

    	var params = window.location.search.split(/\?|\&/);
	
    	params.forEach( function(it) {
    	    if (it) {
 			    var param = it.split("=");
 		    	result[param[0]] = param[1];
        	}
     	});

	    return result;
    }

And then;

    if (queryParameters().sent === 'yes') { .....

Solution 19 - Jquery

This is based on Gazoris's answer, but URL decodes the parameters so they can be used when they contain data other than numbers and letters:

function urlParam(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    // Need to decode the URL parameters, including putting in a fix for the plus sign
    // https://stackoverflow.com/a/24417399
    return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null;
}

Solution 20 - Jquery

There is another example with using URI.js library.

Example answers the questions exactly as asked.

var url = 'http://example.com?sent=yes';
var urlParams = new URI(url).search(true);
// 1. Does sent exist?
var sendExists = urlParams.sent !== undefined;
// 2. Is it equal to "yes"?
var sendIsEqualtToYes = urlParams.sent == 'yes';

// output results in readable form
// not required for production
if (sendExists) {
  console.log('Url has "sent" param, its value is "' + urlParams.sent + '"');
  if (urlParams.sent == 'yes') {
    console.log('"Sent" param is equal to "yes"');
  } else {
    console.log('"Sent" param is not equal to "yes"');
  }
} else {
  console.log('Url hasn\'t "sent" param');
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.18.2/URI.min.js"></script>

Solution 21 - Jquery

Coffeescript version of Sameer's answer

getUrlParameter = (sParam) ->
  sPageURL = window.location.search.substring(1)
  sURLVariables = sPageURL.split('&')
  i = 0
  while i < sURLVariables.length
    sParameterName = sURLVariables[i].split('=')
    if sParameterName[0] == sParam
      return sParameterName[1]
    i++

Solution 22 - Jquery

A slight improvement to Sameer's answer, cache params into closure to avoid parsing and looping through all parameters each time calling

var getURLParam = (function() {
	var paramStr = decodeURIComponent(window.location.search).substring(1);
	var paramSegs = paramStr.split('&');
	var params = [];
	for(var i = 0; i < paramSegs.length; i++) {
		var paramSeg = paramSegs[i].split('=');
		params[paramSeg[0]] = paramSeg[1];
	}
	console.log(params);
	return function(key) {
		return params[key];
	}
})();

Solution 23 - Jquery

I use this and it works. http://codesheet.org/codesheet/NF246Tzs

function getUrlVars() {
	var vars = {};
	var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
	vars[key] = value;
	});
return vars;
}


var first = getUrlVars()["id"];

Solution 24 - Jquery

With vanilla JavaScript, you could easily take the params (location.search), get the substring (without the ?) and turn it into an array, by splitting it by '&'.

As you iterate through urlParams, you could then split the string again with '=' and add it to the 'params' object as object[elmement[0]] = element[1]. Super simple and easy to access.

http://www.website.com/?error=userError&type=handwritten

            var urlParams = location.search.substring(1).split('&'),
                params = {};

            urlParams.forEach(function(el){
                var tmpArr = el.split('=');
                params[tmpArr[0]] = tmpArr[1];
            });
           

            var error = params['error'];
            var type = params['type'];

Solution 25 - Jquery

What if there is & in URL parameter like filename="p&g.html"&uid=66

In this case the 1st function will not work properly. So I modified the code

function getUrlParameter(sParam) {
    var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
        }
    }
}

Solution 26 - Jquery

Admittedly I'm adding my answer to an over-answered question, but this has the advantages of:

-- Not depending on any outside libraries, including jQuery

-- Not polluting global function namespace, by extending 'String'

-- Not creating any global data and doing unnecessary processing after match found

-- Handling encoding issues, and accepting (assuming) non-encoded parameter name

-- Avoiding explicit for loops

String.prototype.urlParamValue = function() {
    var desiredVal = null;
    var paramName = this.valueOf();
    window.location.search.substring(1).split('&').some(function(currentValue, _, _) {
        var nameVal = currentValue.split('=');
        if ( decodeURIComponent(nameVal[0]) === paramName ) {
            desiredVal = decodeURIComponent(nameVal[1]);
            return true;
        }
        return false;
    });
    return desiredVal;
};

Then you'd use it as:

var paramVal = "paramName".urlParamValue() // null if no match

Solution 27 - Jquery

If you want to find a specific parameter from a specific url:

function findParam(url, param){
  var check = "" + param;
  if(url.search(check )>=0){
      return url.substring(url.search(check )).split('&')[0].split('=')[1];
  }
}  

var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254";  
alert(findParam(url,"order_no"));

Solution 28 - Jquery

Another solution that uses jQuery and JSON, so you can access the parameter values through an object.

var loc = window.location.href;
var param = {};
if(loc.indexOf('?') > -1)
{
	var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&");
	
	var stringJson = "{";
	for(var i=0;i<params.length;i++)
	{
		var propVal = params[i].split("=");
		var paramName = propVal[0];
		var value = propVal[1];
		stringJson += "\""+paramName+"\": \""+value+"\"";
		if(i != params.length-1) stringJson += ",";
	}
	stringJson += "}";
    // parse string with jQuery parseJSON
	param = $.parseJSON(stringJson);
}

Assuming your URL is http://example.com/?search=hello+world&language=en&page=3

After that it's only a matter of using the parameters like this:

param.language

to return

en

The most useful usage of this is to run it at page load and make use of a global variable to use the parameters anywhere you might need them.

If your parameter contains numeric values then just parse the value.

parseInt(param.page)

If there are no parameters param will just be an empty object.

Solution 29 - Jquery

I Hope to use the full simple REG Exp

  function getQueryString1(param) {
    return decodeURIComponent(
        (location.search.match(RegExp("[?|&]"+param+'=(.+?)(&|$)'))||[,null])[1]
    );
  }

Solution 30 - Jquery

$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}

Solution 31 - Jquery

use this

$.urlParam = function(name) {
  var results = new RegExp('[\?&amp;]' + name + '=([^&amp;#]*)').exec(window.location.href);
  return results[1] || 0;
}

Solution 32 - Jquery

Just wanted to show my codes:

function (name) {
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
  var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
  results = regex.exec(location.search);
  return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));

}

Solution 33 - Jquery

var RequestQuerystring;
(window.onpopstate = function () {
    var match,
        pl = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query = window.location.search.substring(1);

    RequestQuerystring = {};
    while (match = search.exec(query))
        RequestQuerystring[decode(match[1])] = decode(match[2]);
})();

RequestQuerystring is now an object with all you parameters

Solution 34 - Jquery

Get the param from a string:

Object.defineProperty(String.prototype, 'urlParam', {

	value: function (param) {
	
	"use strict";
	
	var str = this.trim();

	var regex = "[\?&]" + param + "=([^&#]*)";

	var results = new RegExp(regex, "i").exec(str);

	return (results !== null) ? results[1] : '';
	
	}
});

to use:

var src = 'http://your-url.com/?param=value'

console.log(src.urlParam(param)); // returns 'value'

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLeBlaireauView Question on Stackoverflow
Solution 1 - JquerySameer KaziView Answer on Stackoverflow
Solution 2 - JqueryOptioView Answer on Stackoverflow
Solution 3 - JqueryReza Baradaran GazorisangiView Answer on Stackoverflow
Solution 4 - JqueryAwokeKnowingView Answer on Stackoverflow
Solution 5 - JqueryrodnaphView Answer on Stackoverflow
Solution 6 - JquerySariban D'ClView Answer on Stackoverflow
Solution 7 - JqueryXinView Answer on Stackoverflow
Solution 8 - JqueryQwertyView Answer on Stackoverflow
Solution 9 - JqueryShuhad zamanView Answer on Stackoverflow
Solution 10 - JquerykelvintaywlView Answer on Stackoverflow
Solution 11 - JqueryTarun GuptaView Answer on Stackoverflow
Solution 12 - JqueryalexwView Answer on Stackoverflow
Solution 13 - JqueryPraveen TiwariView Answer on Stackoverflow
Solution 14 - JqueryTats_innitView Answer on Stackoverflow
Solution 15 - JqueryImBhavin95View Answer on Stackoverflow
Solution 16 - JqueryMichael KonečnýView Answer on Stackoverflow
Solution 17 - JqueryNaamiView Answer on Stackoverflow
Solution 18 - JqueryBrian FView Answer on Stackoverflow
Solution 19 - JqueryStephen OstermillerView Answer on Stackoverflow
Solution 20 - JqueryuserlondView Answer on Stackoverflow
Solution 21 - JquerystevenspielView Answer on Stackoverflow
Solution 22 - Jquerystreaver91View Answer on Stackoverflow
Solution 23 - Jquerystudio-klikView Answer on Stackoverflow
Solution 24 - JqueryDDTView Answer on Stackoverflow
Solution 25 - Jqueryuser562451View Answer on Stackoverflow
Solution 26 - JqueryBaseZenView Answer on Stackoverflow
Solution 27 - JqueryWahid MasudView Answer on Stackoverflow
Solution 28 - JqueryNiksuskiView Answer on Stackoverflow
Solution 29 - JqueryRaja Rama Mohan ThavalamView Answer on Stackoverflow
Solution 30 - JqueryAftab UddinView Answer on Stackoverflow
Solution 31 - JqueryddfsfView Answer on Stackoverflow
Solution 32 - JqueryirenecarnayView Answer on Stackoverflow
Solution 33 - JqueryMina GabrielView Answer on Stackoverflow
Solution 34 - JqueryJacques JoubertView Answer on Stackoverflow