Changing URL parameters with jQuery

September 20th, 2011 by Samuel Santos Leave a reply »

You can find plenty of resources about this topic just by googling the web, most of which will point to jQuery plugins.
But the fact is that it’s so easy to achieve this by simply using jQuery that you do not need a plugin.

The code is pretty much self explanatory:

/*
 * queryParameters -> handles the query string parameters
 * queryString -> the query string without the fist '?' character
 * re -> the regular expression
 * m -> holds the string matching the regular expression
 */
var queryParameters = {}, queryString = location.search.substring(1),
    re = /([^&=]+)=([^&]*)/g, m;

// Creates a map with the query string parameters
while (m = re.exec(queryString)) {
    queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}

// Add new parameters or update existing ones
queryParameters['newParameter'] = 'new parameter';
queryParameters['existingParameter'] = 'new value';

/*
 * Replace the query portion of the URL.
 * jQuery.param() -> create a serialized representation of an array or
 *     object, suitable for use in a URL query string or Ajax request.
 */
location.search = $.param(queryParameters); // Causes page to reload

You can clearly improve the regular expression, but the one above meet my needs.

Don't be shellfish...Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInPin on PinterestBuffer this pageEmail this to someone
Advertisement

7 comments

  1. Thanks for such a nice post. I was just looking for one of my website and it works ..

  2. João Cunha says:

    Awesome script. It works exactly the way I wanted to with no need to use bloated jQuery plugins.

    Thanks a lot,
    João

  3. Hugo says:

    Awesome! Clean and simple. Thanks

  4. Jan Zitniak says:

    Perfect!

  5. tomca says:

    right on – thanks for sharing! In a world of plugin links, this one stands out!

  6. Using regex for this is just wrong and will fail in some scenarios.

    You’d better off using a tiny reusable module like:
    https://github.com/sindresorhus/query-string

Leave a Reply