parametros open another javascript url get

open - return redirect javascript



Usando el parĂ¡metro GET de una URL en JavaScript (11)

¿Usando jquery? Lo he usado antes: http://projects.allmarkedup.com/jquery_url_parser/ y funcionó bastante bien.

Esta pregunta ya tiene una respuesta aquí:

Si estoy en una página como

http://somesite.com/somepage.php?param1=asdf

En el JavaScript de esa página, me gustaría establecer una variable para el valor del parámetro en la parte GET de la URL.

Entonces en JavaScript:

<script> param1var = ... // ... would be replaced with the code to get asdf from URI </script>

¿Que sería?


Aquí hay un código de muestra para eso.

<script> var param1var = getQueryVariable("param1"); function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } alert(''Query Variable '' + variable + '' not found''); } </script>


Aquí hay una versión que le gusta a JSLint:

/*jslint browser: true */ var GET = {}; (function (input) { ''use strict''; if (input.length > 1) { var param = input.slice(1).replace(//+/g, '' '').split(''&''), plength = param.length, tmp, p; for (p = 0; p < plength; p += 1) { tmp = param[p].split(''=''); GET[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp[1]); } } }(window.location.search)); window.alert(JSON.stringify(GET));

O si necesita soporte para varios valores para una clave como, por ejemplo. ? clave = valor1 y clave = valor2 puede usar esto:

/*jslint browser: true */ var GET = {}; (function (input) { ''use strict''; if (input.length > 1) { var params = input.slice(1).replace(//+/g, '' '').split(''&''), plength = params.length, tmp, key, val, obj, p; for (p = 0; p < plength; p += 1) { tmp = params[p].split(''=''); key = decodeURIComponent(tmp[0]); val = decodeURIComponent(tmp[1]); if (GET.hasOwnProperty(key)) { obj = GET[key]; if (obj.constructor === Array) { obj.push(val); } else { GET[key] = [obj, val]; } } else { GET[key] = val; } } } }(window.location.search)); window.alert(JSON.stringify(GET));


Así es cómo podría hacerlo en Coffee Script (solo si alguien está interesado).

decodeURIComponent( v.split( "=" )[1] ) if decodeURIComponent( v.split( "=" )[0] ) == name for v in window.location.search.substring( 1 ).split( "&" )


De mi archivo de programación:

function querystring(key) { var re=new RegExp(''(?://?|&)''+key+''=(.*?)(?=&|$)'',''gi''); var r=[], m; while ((m=re.exec(document.location.search)) != null) r[r.length]=m[1]; return r; }

Si el valor no existe, se devuelve una matriz vacía.
Si el valor existe, una matriz es return que tiene un elemento, el valor.
Si existen varios valores con el nombre, se devuelve una matriz que contiene cada valor.

Ejemplos:

var param1var = querystring("param1")[0]; document.write(querystring("name")); if (querystring(''id'')==''42'') alert(''We apoligize for the inconvenience.''); if (querystring(''button'').length>0) alert(querystring(''info''));


Esto se veía bien:

function gup( name ){ name = name.replace(/[/[]/,"///[").replace(/[/]]/,"///]"); var regexS = "[//?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( window.location.href ); if( results == null ) return ""; else return results[1]; }

Desde http://www.netlobo.com/url_query_string_javascript.html


Hice esta variación de la solución de Gnarf, por lo que la llamada y el resultado son similares a PHP:

function S_GET(id){ var a = new RegExp(id+"=([^&#=]*)"); return decodeURIComponent(a.exec(window.location.search)[1]); }

Pero como ser llamado en una función ralentiza el proceso, es mejor usarlo como global:

window['' var_name ''] = decodeURIComponent( / var_in_get =([^&#=]*)/.exec(window.location.search)[1] );

ACTUALIZAR

Como todavía estoy aprendiendo JS, creé una mejor respuesta en un comportamiento más JS:

Url = { get get(){ var vars= {}; if(window.location.search.length!==0) window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){ key=decodeURIComponent(key); if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);} else {vars[key]= [].concat(vars[key], decodeURIComponent(value));} }); return vars; } };

Esto permite ser llamado simplemente usando Url.get .

Ejemplo El url ?param1=param1Value&param2=param2Value se puede llamar así:

Url.get.param1 //"param1Value" Url.get.param2 //"param2Value"

aquí hay un snipet:

// URL GET params url = "?a=2&a=3&b=2&a=4"; Url = { get get(){ var vars= {}; if(url.length!==0) url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){ key=decodeURIComponent(key); if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);} else {vars[key]= [].concat(vars[key], decodeURIComponent(value));} }); return vars; } }; document.querySelector(''log'').innerHTML = JSON.stringify(Url.get);

<log></log>


No necesitas hacer nada especial, en realidad. Puede combinar JavaScript y PHP para obtener variables de PHP directamente en JavaScript.

var param1val = <?php echo $_GET[''param1''] ?>;


Puede obtener la parte de "búsqueda" del objeto de ubicación, y luego analizarlo.

var matches = /param1=([^&#=]*)/.exec(window.location.search); var param1 = matches[1];


Puedes usar esta función

function getParmFromUrl(url, parm) { var re = new RegExp(".*[?&]" + parm + "=([^&]+)(&|$)"); var match = url.match(re); return(match ? match[1] : ""); }


Si ya está ejecutando una página php, entonces

php bit:

$json = json_encode($_REQUEST, JSON_FORCE_OBJECT); print "<script>var getVars = $json;</script>";

js bit:

var param1var = getVars.param1var;

Pero para las páginas Html, la solución de Jose Basilio me parece buena.

¡Buena suerte!