2009-09-01 6 views
7

¿Cómo se analizan los parámetros de URL en JavaScript? (Estos son los parámetros que normalmente llamaría parámetros GET o CGI, pero en este caso la página se está enviando a sí misma, no a un servidor, por lo que no hay solicitud GET y definitivamente no hay un programa CGI)¿Qué biblioteca de JavaScript debería usar para analizar los parámetros de URL?

I ' He visto una serie de rutinas en la red que puedo copiar, pero no tengo idea de cuán robustas son. Estoy acostumbrado a otros lenguajes como Perl y Java, donde puedo confiar en una biblioteca robusta y extremadamente bien probada que sé manejará millones de pequeños casos extremos en el estándar. Me gustaría lo mismo aquí, en lugar de simplemente cortar y pegar un ejemplo.

+0

¿Cuántas "de borde casos" son sus expectativas con los datos GET simples ?! –

+1

Josh - como el salto dice, millones de pequeños. –

Respuesta

1

Aquí hay dos funciones simples que hacen el trabajo: http://adamv.com/dev/javascript/querystring

Aquí es una muestra de la referencia de la API:

var qs = new Querystring(); 

// Parse a given querystring 
var qs2 = new Querystring("name1=value1&name2=value2"); 

var v1 = qs2.get("name1"); 
var v3 = qs2.get("name3", "default value"); 
+0

Gracias. Era liviano y minimalista, pero aún así conseguí lo que quería: una biblioteca, en lugar de ejemplos para copiar. Quería usar JQuery, pero parece que no puedo resolverlo todo hoy, así que tendré que esperar para otro momento. – skiphoppy

+0

La razón por la que publiqué estos en lugar de jQuery es porque no necesita un marco completo para administrar tareas tan simples. –

+1

Sí, y hoy fue bueno no tener que depender de todo el framework. – skiphoppy

7
+1

Quería ir por esta ruta, pero era demasiado para aprender y trabajar hoy. Es mi respuesta preferida para cualquier persona con suficiente competencia y que pueda manejar la sobrecarga del marco jQuery. – skiphoppy

+1

"jQuery URL Parser". el enlace está roto. –

1

si es "presentar a sí mismo," ¿Necesita hacer obtener los parámetros ?

Pero si lo hace, la mayoría de los navegadores ahora tienen la función decodeURIComponent que se encargará de los parámetros individuales; su trabajo es dividirlos en & (String#split lo hará muy bien). Si desea una biblioteca, jQuery y Prototype son bien utilizados y probados.

1

La mejor manera que he encontrado es simplemente hágalo usted mismo y canalizar los parametros en un objeto global clave/valor.

Conseguir quer params es simple ...

simplemente tomar un par de .split() 's

var myquery = thewholeurl.split("?")[1]; //will get the whole querystring with the ? 

entonces usted puede hacer un

myParams = myquery.split (" & ")

entonces puede hacer

for each param in myparams 
{ 
temp = param.split("="); 

mykeys.push(temp[0]); 
myvalues.push(temp[1]); 

OR 

myObject[temp[0]] = temp[1]; 
} 

Es solo una cuestión de estilo.

Esto no es un código perfecto, sólo cosas pseudo para darle la idea.

+0

Si lo hace, deberá ejecutar las claves y los valores a través de 'decodeURIComponent'. –

+0

¡Uy, un error ya por no usar una biblioteca! :) – skiphoppy

-1

Javascript no tiene soporte para los parámetros de URL.

De todos modos, la propiedad location.search devuelve la parte de la URL de la página actual a partir del signo de interrogación ('?').

A partir de esto, puede escribir su propio analizador de parámetros o puede utilizar uno de los disponibles en los marcos de JavaScript más comunes, como JQuery y similares.

0

Creo que esta biblioteca funcionaría bastante bien, es independiente, así que puedes usarla con JQuery o con YAHOO o Dojo, otra ventaja es que está bastante bien documentada.

http://www.openjsan.org/doc/t/th/theory/HTTP/Query/0.03/lib/HTTP/Query.html 

Puede utilizar HTTP.Query para hacer todo el trabajo por usted en este caso. Es solo como 1.2 KB comprimidos por lo que incluso podría incluirlo en una biblioteca más grande si lo desea.

1

que utilizan la biblioteca parseUri disponible aquí: http://stevenlevithan.com/demo/parseuri/js/

Se le permite hacer exactamente lo que está pidiendo:

var uri = 'http://google.com/?q=stackoverflow'; 
var q = uri.queryKey['q']; 
// q = 'stackoverflow' 

He estado usando durante un tiempo hasta ahora y refugio Tuve algún problema

1

Me encontraron esta sencilla utilidad para análisis de la URL, modificar url (como la adición de nueva consulta params): https://github.com/derek-watson/jsUri

+0

¿Cómo es la compatibilidad del navegador para jsUri? – tkr

Cuestiones relacionadas