anteriormente señalé a esta pregunta: Get QueryString values with jQuery - sino como @Crescent fresco señaló, estos ejemplos no se ocupan de las matrices en la cadena de consulta (y, además, son un poco lento Creo
. Así cocinaba mi versión de esta función:
function getQueryString() {
var ret = {};
var parts = (document.location.toString().split('?')[1]).split('&');
for (var i = 0; i < parts.length; i++) {
var p = parts[i].split('=');
// so strings will be correctly parsed:
p[1] = decodeURIComponent(p[1].replace(/\+/g, " "));
if (p[0].search(/\[\]/) >= 0) { // then it's an array
p[0] = p[0].replace('[]','');
if (typeof ret[p[0]] != 'object') ret[p[0]] = [];
ret[p[0]].push(p[1]);
} else {
ret[p[0]] = p[1];
}
}
return ret;
}
Pero hay advertencias Sólo funcionará en una cadena de consulta formado correctamente - no hay detección de errores Además, no funciona en numerada/matrices indexadas... . Es cuando su matriz se define en la cadena de consulta como:
?category[3]=1&category[4]=7&category[20]=3&id=8az
Sería trivial agregar a la búsqueda .search() una expresión regular para encontrar eso también, pero no soy el mejor experto en expresiones regulares ... ¿Alguien tiene ideas?
Acutalmente sí, con getUrlParam que devuelve una matriz como la necesitaba. – Hibiscus
hmm.,. ¿por qué lo elegiste como la respuesta correcta? – arnorhs
Porque, como acaba de decir ... "en realidad sí, [mi sugerencia] sí" hace lo que necesitaba. –