I've got an url like this:
.html?field[]=history&field[]=science&field[]=math
Using jQuery, how can I grab the GET array?
Thanks.
I've got an url like this:
http://www.somewhere./index.html?field[]=history&field[]=science&field[]=math
Using jQuery, how can I grab the GET array?
Thanks.
Share Improve this question edited Jul 8, 2010 at 17:30 Brock Adams 93.6k23 gold badges241 silver badges305 bronze badges asked Jul 6, 2010 at 17:02 JeffreyJeffrey 4,14612 gold badges44 silver badges66 bronze badges 2- What is your underlying HTML server, PHP, or something else? – mcandre Commented Jul 6, 2010 at 17:06
- server does PHP, I'm trying to filter a large table based on the jquery datatables filter... so I need to pass the array through jquery for the filter to work... if that makes sense. – Jeffrey Commented Jul 6, 2010 at 17:32
2 Answers
Reset to default 6[See it in action]
var str = "http://www.somewhere./index.html?field[]=history&field[]=science&field[]=math";
var match = str.match(/[^=&?]+\s*=\s*[^&#]*/g);
var obj = {};
for ( var i = match.length; i--; ) {
var spl = match[i].split("=");
var name = spl[0].replace("[]", "");
var value = spl[1];
obj[name] = obj[name] || [];
obj[name].push(value);
}
alert(obj["field"].join(", "))
/*
* Returns a map of querystring parameters
*
* Keys of type <fieldName>[] will automatically be added to an array
*
* @param String url
* @return Object parameters
*/
function getParams(url) {
var regex = /([^=&?]+)=([^&#]*)/g, params = {}, parts, key, value;
while((parts = regex.exec(url)) != null) {
key = parts[1], value = parts[2];
var isArray = /\[\]$/.test(key);
if(isArray) {
params[key] = params[key] || [];
params[key].push(value);
}
else {
params[key] = value;
}
}
return params;
}