Estoy buscando un complemento jQuery que pueda obtener parámetros de URL y que sea compatible con esta cadena de búsqueda sin generar el error de JavaScript: "secuencia de URI con formato incorrecto". Si no hay un complemento jQuery que lo admita, necesito saber cómo modificarlo para admitirlo.
?search=%E6%F8%E5
El valor del parámetro URL, cuando se decodifica, debe ser:
æøå
(Los personajes son noruegos).
No tengo acceso al servidor, por lo que no puedo modificar nada en él.
javascript
url
query-string
url-parameters
Sindre Sorhus
fuente
fuente
decodeURIComponent()
. Los caracteres noruegos probablemente se codificaron usando algo comoescape()
y cambiar ladecodeURIComponent()
llamada aunescape()
debería ser útil.Respuestas:
fuente
name = 'bar'
, creo que esta expresión regular coincidiría'foobar=10'
y volvería'10'
. Tal vez podría agregar'[?|&]'
al comienzo de su expresión regular. ¡Salud!function getURLParameter(name) { var p = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search); if(!!p) { p = decodeURI(p[1]); } return p; }
A continuación se muestra lo que he creado a partir de los comentarios aquí, así como la corrección de errores no mencionados (como devolver realmente nulo y no 'nulo'):
fuente
new
frente a RegExp? Menos advertencias de pelusa.Lo que realmente quieres es el complemento jQuery URL Parser . Con este complemento, obtener el valor de un parámetro de URL específico (para la URL actual) se ve así:
Si desea un objeto con nombres de parámetros como claves y valores de parámetros como valores, simplemente llame
param()
sin un argumento, como este:Esta biblioteca también funciona con otras URL, no solo la actual:
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.
También tiene otras características, consulte 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 un poco funciona en la mayoría de los casos, utilizar un analizador real URI. Dependiendo de la respuesta, el código de otras respuestas puede regresar en
'null'
lugar denull
, 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 consulta repetidamente la URL para parámetros, etc.Use un analizador de URI real, no invente el suyo.
Para aquellos aversos a jQuery, hay una versión del complemento que es JS puro .
fuente
Si no sabe cuáles serán los parámetros de la URL y desea obtener un objeto con las claves y los valores que están en los parámetros, puede usar esto:
Llamar a getParameters () con una URL como
/posts?date=9/10/11&author=nilbus
devolvería:No incluiré el código aquí, ya que está aún más lejos de la pregunta, pero weareon.net publicó una biblioteca que también permite la manipulación de los parámetros en la URL:
fuente
{"": undefined}
cuando la URL no tiene parámetros. Es mejor devolver un objeto vacío utilizandoif(searchString=='') return {};
directamente después de lasearchString
asignación.Puede usar la propiedad nativa location.search del navegador :
Pero hay algunos complementos de jQuery que pueden ayudarte:
fuente
Basado en la respuesta del 999 :
Cambios:
decodeURI()
se reemplaza condecodeURIComponent()
[?|&]
se agrega al comienzo de la expresión regularfuente
?a=&b=1
. Mejor"[?&]"+name+"=([^&]*)"
Necesita agregar el parámetro i para que no distinga entre mayúsculas y minúsculas:
fuente
Después de leer todas las respuestas, terminé con esta versión con + una segunda función para usar parámetros como indicadores
fuente
fuente
Por ejemplo, una función que devuelve el valor de cualquier variable de parámetros.
Y así es como puede usar esta función suponiendo que la URL es,
"http://example.com/?technology=jquery&blog=jquerybyexample".
Entonces, en la variable de código anterior "tech" tendrá "jQuery" como valor y la variable "blog" será "jquerybyexample".
fuente
¡No deberías usar jQuery para algo como esto!
La forma moderna es usar pequeños módulos reutilizables a través de un administrador de paquetes como Bower.
He creado un pequeño módulo que puede analizar la cadena de consulta en un objeto. Úselo así:
fuente
Aquí hay mucho código con errores 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 regex y es elegantemente simple:
Regex no es la solución completa y definitiva, para este tipo de problema, la simple manipulación de cadenas puede funcionar mucho más eficientemente. Código fuente .
fuente
getURLParameter(id)
ogetURLParameter(Id)
funciona igual:)fuente
Fragmento de código jQuery para obtener las variables dinámicas almacenadas en la URL como parámetros y almacenarlas como variables JavaScript listas para usar con sus scripts:
fuente
fuente
Creé una función simple para obtener el parámetro de URL en JavaScript desde una URL como esta:
SALIDA:
18
fuente
En caso de que tengan la URL como localhost / index.xsp? A = 1 # algo y necesiten obtener el parámetro, no el hash.
fuente
Ligera modificación a la respuesta por @pauloppenheim, ya que no manejará adecuadamente los nombres de parámetros que pueden ser parte de otros nombres de parámetros.
Por ejemplo: si tiene parámetros "appenv" y "env", cambiar el valor de "env" puede recoger el valor "appenv".
Reparar:
fuente
Esto puede ayudar.
fuente
?twothrids=text