Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
JQuery Querystring Parser
(function ( $ ) {
$.qsParameters = function(str) {
var qso = {};
var qs = (str || document.location.search)
// Check for an empty querystring
if (qs == ""){
return qso;
}
// Normalize the querystring
qs = qs.replace(/(^\?)/,'')
.replace(/;/g,'&');
while (qs.indexOf("&&") != -1){
qs = qs.replace(/&&/g,'&');
}
qs = qs.replace(/([\&]+$)/,'');
// Break the querystring into parts
qs = qs.split("&");
// Build the querystring object
for (var i=0; i < qs.length; i++){
var qi = qs[i].split("=");
qi = $.map(qi, function (n) {return decodeURIComponent(n)});
if (qso[qi[0]] != undefined){
// If a key already exists then make this an object
if (typeof(qso[qi[0]]) == "string"){
var temp = qso[qi[0]];
if (qi[1] == ""){
qi[1] = null;
}
//console.log("Duplicate key: ["+qi[0]+"]["+qi[1]+"]");
qso[qi[0]] = [];
qso[qi[0]].push(temp);
qso[qi[0]].push(qi[1]);
}else if (typeof(qso[qi[0]]) == "object"){
if (qi[1] == ""){
qi[1] = null;
}
//console.log("Duplicate key: ["+qi[0]+"]["+qi[1]+"]");
qso[qi[0]].push(qi[1]);
}
}else{
// If no key exists just set it as a string
if (qi[1] == ""){
qi[1] = null;
}
//console.log("New key: ["+qi[0]+"]["+qi[1]+"]");
qso[qi[0]] = qi[1];
}
}
return qso;
}
}( jQuery ));
@jslegers

This comment has been minimized.

Copy link

@jslegers jslegers commented Feb 21, 2016

I personally don't see the point of making your code dependent on jQuery. You could just release it as a standalone JS library.

Other than that, good job!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.