Ver Mensaje Individual
  #6 (permalink)  
Antiguo 22/04/2007, 02:02
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Re: Recibiendo array por url

Hola:

Gracias derkenuke, no sé si lo he mejorado un poco, pero al menos he conseguido poner unas líneas menos... me basé un poco en la idea de Andrés:

Código:
function receptor()	{
	var entrada = new Object();
	if (location.href.indexOf("?") == -1) return;
	params = location.search.substr(1).split("&");
	for (var i = 0, total = params.length; i < total; i ++)
		entrada[params[i].split("=")[0]] += " " + params[i].split("=")[1];
	for (i in entrada)	{
		actual = entrada[i].split(" ").slice(1);
		for (x = 0, total = actual.length; x < total; x ++)
			actual[x] = unescape(actual[x]);
			window[i] = (actual.length == 1) ? actual[0] : actual;
	}
}
Y mientras escribía se me ocurrió otra manera según el tipo de los datos ("undefined" cuando es la primera asignación, "string" después de la primera asignación y "object" el resto de los casos):

Código:
function receptor()	{
	var entrada = new Object();
	if (location.href.indexOf("?") == -1) return;
	params = location.search.substr(1).split("&");
	for (var i = 0, total = params.length; i < total; i ++)	{
		pareja = params[i].split("="); dato = unescape(pareja[1]);
		switch	(typeof(entrada[pareja[0]]))	{
			case "undefined": entrada[pareja[0]] = dato; break;
			case "object": entrada[pareja[0]][entrada[pareja[0]].length] = dato; break;
			case "string": temp = [entrada[pareja[0]], dato]; entrada[pareja[0]] = temp; break;
		}
	}
	for (i in entrada)	window[i] = entrada[i];
}
¿Cuál creen que es el mejor de los métodos...? ¿A alguien se le ocurre algo mejor?

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo