una recibir por pasar parametros obtener funcion enviar desde datos agregar javascript url query-string url-parameters

javascript - recibir - pasar parametros por url html



Obtener el parámetro de URL de escape (19)

Estoy buscando un complemento de jQuery que pueda obtener parámetros de URL, y admita esta cadena de búsqueda sin generar el error de JavaScript: "secuencia URI mal formada". Si no hay un complemento de jQuery que admita esto, necesito saber cómo modificarlo para admitirlo.

?search=%E6%F8%E5

El valor del parámetro de URL, cuando se decodifique, debe ser:

æøå

(Los personajes son noruegos).

No tengo acceso al servidor, por lo que no puedo modificar nada en él.


A continuación se muestra lo que he creado a partir de los comentarios aquí, así como la solución de errores que no se mencionan (como el hecho de que devuelvan un valor nulo y no "nulo")

function getURLParameter(name) { return decodeURIComponent((new RegExp(''[?|&]'' + name + ''='' + ''([^&;]+?)(&|#|;|$)'').exec(location.search)||[,""])[1].replace(//+/g, ''%20''))||null; }


Aquí hay un montón de código de buggy y las soluciones de expresiones regulares son muy lentas. Encontré una solución que funciona hasta 20 veces más rápido que la contraparte de expresiones regulares y es elegantemente simple:

/* * @param string parameter to return the value of. * @return string value of chosen parameter, if found. */ function get_param(return_this) { return_this = return_this.replace(//?/ig, "").replace(/=/ig, ""); // Globally replace illegal chars. var url = window.location.href; // Get the URL. var parameters = url.substring(url.indexOf("?") + 1).split("&"); // Split by "param=value". var params = []; // Array to store individual values. for(var i = 0; i < parameters.length; i++) if(parameters[i].search(return_this + "=") != -1) return parameters[i].substring(parameters[i].indexOf("=") + 1).split("+"); return "Parameter not found"; } console.log(get_param("parameterName"));

Regex no es la solución definitiva y definitiva, para este tipo de problema, la simple manipulación de cadenas puede funcionar de manera mucho más eficiente. Código fuente .


Basado en la respuesta del 999 :

function getURLParameter(name) { return decodeURIComponent( (location.search.match(RegExp("[?|&]"+name+''=(.+?)(&|$)''))||[,null])[1] ); }

Cambios:

  • decodeURI() se reemplaza con decodeURIComponent()
  • [?|&] se agrega al comienzo de la expresión regular

Creé una función simple para obtener el parámetro de URL en JavaScript desde una URL como esta:

.....58e/web/viewer.html?page=*17*&getinfo=33 function buildLinkb(param) { var val = document.URL; var url = val.substr(val.indexOf(param)) var n=parseInt(url.replace(param+"=","")); alert(n+1); } buildLinkb("page");

SALIDA: 18


Después de leer todas las respuestas, terminé con esta versión con + una segunda función para usar los parámetros como indicadores

function getURLParameter(name) { return decodeURIComponent((new RegExp(''[?|&]'' + name + ''='' + ''([^&;]+?)(&|#|;|$)'',''i'').exec(location.search)||[,""])[1].replace(//+/g, ''%20''))||null; } function isSetURLParameter(name) { return (new RegExp(''[?|&]'' + name + ''(?:[=|&|#|;|]|$)'',''i'').exec(location.search) !== null) }


En caso de que tengan la url como localhost / index.xsp? A = 1 # algo y necesitan obtener el parámetro no el hash.

var vars = [], hash, anchor; var q = document.URL.split(''?'')[1]; if(q != undefined){ q = q.split(''&''); for(var i = 0; i < q.length; i++){ hash = q[i].split(''=''); anchor = hash[1].split(''#''); vars.push(anchor[0]); vars[hash[0]] = anchor[0]; } }


Esto puede ayudar.

<script type="text/javascript"> $(document).ready(function(){ alert(getParameterByName("third")); }); function getParameterByName(name){ var url = document.URL, count = url.indexOf(name); sub = url.substring(count); amper = sub.indexOf("&"); if(amper == "-1"){ var param = sub.split("="); return param[1]; }else{ var param = sub.substr(0,amper).split("="); return param[1]; } } </script>


Fragmento de código de jQuery para obtener las variables dinámicas almacenadas en la url como parámetros y almacenarlas como variables de JavaScript listas para usar con sus scripts:

$.urlParam = function(name){ var results = new RegExp(''[/?&]'' + name + ''=([^&#]*)'').exec(window.location.href); if (results==null){ return null; } else{ return results[1] || 0; } } example.com?param1=name&param2=&id=6 $.urlParam(''param1''); // name $.urlParam(''id''); // 6 $.urlParam(''param2''); // null //example params with spaces http://www.jquery4u.com?city=Gold Coast console.log($.urlParam(''city'')); //output: Gold%20Coast console.log(decodeURIComponent($.urlParam(''city''))); //output: Gold Coast


Lo que realmente quieres es el plugin jQuery URL Parser . Con este complemento, obtener el valor de un parámetro de URL específico (para la URL actual) se ve así:

$.url().param(''foo'');

Si desea que un objeto con nombres de parámetros como claves y valores de parámetros como valores, simplemente llame a param() sin un argumento, como este:

$.url().param();

Esta biblioteca también funciona con otras direcciones URL, no solo la actual:

$.url(''http://allmarkedup.com?sky=blue&grass=green'').param(); $(''#myElement'').url().param(); // works with elements that have ''src'', ''href'' or ''action'' attributes

Como se trata de una biblioteca de análisis de URL completa, también puede obtener otra información de la URL, como el puerto especificado o la ruta, el protocolo, etc.

var url = $.url(''http://allmarkedup.com/folder/dir/index.html?item=value''); url.attr(''protocol''); // returns ''http'' url.attr(''path''); // returns ''/folder/dir/index.html''

También tiene otras características, visita su página de inicio para obtener más documentos y ejemplos.

En lugar de escribir su propio analizador URI para este propósito específico que funciona un poco en la mayoría de los casos, use un analizador URI real. Dependiendo de la respuesta, el código de otras respuestas puede devolver ''null'' lugar de null , no funciona con parámetros vacíos ( ?foo=&bar=x ), no puede analizar y devolver todos los parámetros a la vez, repite el trabajo si Consultar repetidamente la URL para parámetros etc.

Use un analizador URI real, no invente el suyo.

Para aquellos reacios a jQuery, hay una versión del plugin que es JS puro .


Modificación leve de la respuesta por parte de @pauloppenheim, ya que no manejará adecuadamente los nombres de parámetros que pueden formar parte de otros nombres de parámetros.

Por ejemplo: si tiene los parámetros "appenv" y "env", al redefinir el valor de "env" se puede seleccionar el valor de "appenv".

Fijar:

var urlParamVal = function (name) { var result = RegExp("(&|//?)" + name + "=(.+?)(&|$)").exec(location.search); return result ? decodeURIComponent(result[2]) : ""; };


Necesidad de agregar el parámetro i para que sea insensible a mayúsculas y minúsculas:

function getURLParameter(name) { return decodeURIComponent( (RegExp(name + ''='' + ''(.+?)(&|$)'', ''i'').exec(location.search) || [, ""])[1] ); }


Por ejemplo, una función que devuelve el valor de cualquier variable de parámetros.

function GetURLParameter(sParam) { var sPageURL = window.location.search.substring(1); var sURLVariables = sPageURL.split(''&''); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split(''=''); if (sParameterName[0] == sParam) { return sParameterName[1]; } } }​

Y así es como puedes usar esta función asumiendo que la URL es,

"http://example.com/?technology=jquery&blog=jquerybyexample".

var tech = GetURLParameter(''technology''); var blog = GetURLParameter(''blog'');

Así que en el código anterior, la variable "tech" tendrá "jQuery" como valor y la variable "blog" será "jquerybyexample".


Puede utilizar la propiedad de search.search nativa del navegador:

function getParameter(paramName) { var searchString = window.location.search.substring(1), i, val, params = searchString.split("&"); for (i=0;i<params.length;i++) { val = params[i].split("="); if (val[0] == paramName) { return unescape(val[1]); } } return null; }

Pero hay algunos complementos de jQuery que pueden ayudarte:


Si no sabe cuáles serán los parámetros de URL y desea obtener un objeto con las claves y los valores que están en los parámetros, puede usar esto:

function getParameters() { var searchString = window.location.search.substring(1), params = searchString.split("&"), hash = {}; if (searchString == "") return {}; for (var i = 0; i < params.length; i++) { var val = params[i].split("="); hash[unescape(val[0])] = unescape(val[1]); } return hash; }

¿Llamar a getParameters () con una URL como /posts?date=9/10/11&author=nilbus devolvería:

{ date: ''9/10/11'', author: ''nilbus'' }

No incluiré el código aquí ya que está aún más lejos de la pregunta, pero weareon.net publicó una biblioteca que permite la manipulación de los parámetros en la URL también:


¡No debes usar jQuery para algo como esto!
La forma moderna es utilizar pequeños módulos reutilizables a través de un gestor de paquetes como Bower.

He creado un pequeño module que puede analizar la cadena de consulta en un objeto. Úsalo así:

// parse the query string into an object and get the property queryString.parse(unescape(location.search)).search; //=> æøå


$.urlParam = function(name){ var results = new RegExp(''[//?&]'' + name + ''=([^&#]*)'').exec(top.window.location.href); return (results !== null) ? results[1] : 0; } $.urlParam("key");


<script type="text/javascript"> function getURLParameter(name) { return decodeURIComponent( (location.search.toLowerCase().match(RegExp("[?|&]" + name + ''=(.+?)(&|$)'')) || [, null])[1] ); } </script>

getURLParameter(id) o getURLParameter(Id) funciona de la misma manera getURLParameter(Id)


function getURLParameter(name) { return decodeURI( (RegExp(name + ''='' + ''(.+?)(&|$)'').exec(location.search)||[,null])[1] ); }


function getURLParameters(paramName) { var sURL = window.document.URL.toString(); if (sURL.indexOf("?") > 0) { var arrParams = sURL.split("?"); var arrURLParams = arrParams[1].split("&"); var arrParamNames = new Array(arrURLParams.length); var arrParamValues = new Array(arrURLParams.length); var i = 0; for (i=0;i<arrURLParams.length;i++) { var sParam = arrURLParams[i].split("="); arrParamNames[i] = sParam[0]; if (sParam[1] != "") arrParamValues[i] = unescape(sParam[1]); else arrParamValues[i] = "No Value"; } for (i=0;i<arrURLParams.length;i++) { if(arrParamNames[i] == paramName){ //alert("Param:"+arrParamValues[i]); return arrParamValues[i]; } } return "No Parameters Found"; } }