pasar - ¿Cómo leer datos GET desde una URL usando JavaScript?
obtener parametros url jquery (7)
Aquí hay una solución. Por supuesto, esta función no necesita cargarse en una opción "window.params", que se puede personalizar.
window.params = function(){
var params = {};
var param_array = window.location.href.split(''?'')[1].split(''&'');
for(var i in param_array){
x = param_array[i].split(''='');
params[x[0]] = x[1];
}
return params;
}();
Ejemplo de llamada de API en http://www.mints.com/myurl.html?name=something&goal=true :
if(window.params.name == ''something'') doStuff();
else if( window.params.goal == ''true'') shoutGOOOOOAAALLL();
Estoy tratando de pasar datos de una página a otra.
www.mints.com?name=something
¿Cómo leer el name
usando JavaScript?
Creo que esto también debería funcionar:
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp(''&''+q+''=([^&]*)'',''i'');
return (s=s.replace(/^/?/,''&'').match(re)) ?s=s[1] :s='''';
}
Solo llámalo así:
var value = $_GET(''myvariable'');
Iv''e corrigió / mejoró la respuesta de Tomalak con:
- Haga una matriz solo si es necesario.
- Si hay otro símbolo de ecuación en el valor que obtiene dentro del valor
- Ahora usa el valor
location.search
lugar de una url. - La cadena de búsqueda vacía da como resultado un objeto vacío.
Código:
function getSearchObject() {
if (location.search === "") return {};
var o = {},
nvPairs = location.search.substr(1).replace(//+/g, " ").split("&");
nvPairs.forEach( function (pair) {
var e = pair.indexOf(''='');
var n = decodeURIComponent(e < 0 ? pair : pair.substr(0,e)),
v = (e < 0 || e + 1 == pair.length)
? null :
decodeURIComponent(pair.substr(e + 1,pair.length - e));
if (!(n in o))
o[n] = v;
else if (o[n] instanceof Array)
o[n].push(v);
else
o[n] = [o[n] , v];
});
return o;
}
La respuesta seleccionada actualmente no funcionó del todo en mi caso, y creo que es bastante típica. ¡Encontré la siguiente función here y funciona genial!
function getAllUrlParams(url) {
// get query string from url (optional) or window
var queryString = url ? url.split(''?'')[1] : window.location.search.slice(1);
// we''ll store the parameters here
var obj = {};
// if query string exists
if (queryString) {
// stuff after # is not part of query string, so get rid of it
queryString = queryString.split(''#'')[0];
// split our query string into its component parts
var arr = queryString.split(''&'');
for (var i=0; i<arr.length; i++) {
// separate the keys and the values
var a = arr[i].split(''='');
// in case params look like: list[]=thing1&list[]=thing2
var paramNum = undefined;
var paramName = a[0].replace(//[/d*/]/, function(v) {
paramNum = v.slice(1,-1);
return '''';
});
// set parameter value (use ''true'' if empty)
var paramValue = typeof(a[1])===''undefined'' ? true : a[1];
// (optional) keep case consistent
paramName = paramName.toLowerCase();
paramValue = paramValue.toLowerCase();
// if parameter name already exists
if (obj[paramName]) {
// convert value to array (if still string)
if (typeof obj[paramName] === ''string'') {
obj[paramName] = [obj[paramName]];
}
// if no array index number specified...
if (typeof paramNum === ''undefined'') {
// put the value on the end of the array
obj[paramName].push(paramValue);
}
// if array index number specified...
else {
// put the value at that index number
obj[paramName][paramNum] = paramValue;
}
}
// if param name doesn''t exist yet, set it
else {
obj[paramName] = paramValue;
}
}
}
return obj;
}
También hice una función bastante simple. Lo llamas por: get ("yourgetname");
y obtener lo que sea que haya (Ahora que lo escribí noté que te dará% 26 si tuvieras un & en tu valor ...)
function get(name){
var url = window.location.search;
var num = url.search(name);
var namel = name.length;
var frontlength = namel+num+1; //length of everything before the value
var front = url.substring(0, frontlength);
url = url.replace(front, "");
num = url.search("&");
if(num>=0) return url.substr(0,num);
if(num<0) return url;
}
location.search https://developer.mozilla.org/en/DOM/window.location
aunque la mayoría usa algún tipo de rutina de análisis para leer los parámetros de cadena de consulta.
aquí hay uno http://safalra.com/web-design/javascript/parsing-query-strings/
function parseURLParams(url) {
var queryStart = url.indexOf("?") + 1,
queryEnd = url.indexOf("#") + 1 || url.length + 1,
query = url.slice(queryStart, queryEnd - 1),
pairs = query.replace(//+/g, " ").split("&"),
parms = {}, i, n, v, nv;
if (query === url || query === "") return;
for (i = 0; i < pairs.length; i++) {
nv = pairs[i].split("=", 2);
n = decodeURIComponent(nv[0]);
v = decodeURIComponent(nv[1]);
if (!parms.hasOwnProperty(n)) parms[n] = [];
parms[n].push(nv.length === 2 ? v : null);
}
return parms;
}
Use de la siguiente manera:
var urlString = "http://www.foo.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
urlParams = parseURLParams(urlString);
que devuelve un objeto como este:
{
"a" : ["a a"], /* param values are always returned as arrays */
"b b": ["b"], /* param names can have special chars as well */
"c" : ["1", "2"] /* an URL param can occur multiple times! */
"d" : [null] /* parameters without values are set to null */
}
Asi que
parseURLParams("www.mints.com?name=something")
da
{name: ["something"]}
EDITAR : La versión original de esta respuesta utilizó un enfoque basado en expresiones regulares para el análisis de URL. Utilizaba una función más corta, pero el enfoque era defectuoso y lo reemplacé con un analizador apropiado.