Foros del Web » Programando para Internet » Javascript »

Mal lectura de las variables de la url

Estas en el tema de Mal lectura de las variables de la url en el foro de Javascript en Foros del Web. Hola, tengo un codigo que me lee las variables de la url, lo pongo por si es necesario; Código: <script language="JavaScript"> var remplaza = /\+/gi; ...
  #1 (permalink)  
Antiguo 10/03/2007, 12:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Mal lectura de las variables de la url

Hola, tengo un codigo que me lee las variables de la url, lo pongo por si es necesario;
Código:
<script language="JavaScript">
  var remplaza = /\+/gi; 
  var url = window.location.href;
  
  url = unescape(url);
  url = url.replace(remplaza, " ");
  url = url.toUpperCase();
  
  function obtener_valor(variable) 
  { 
    var variable_may = variable.toUpperCase();
	var variable_pos = url.indexOf(variable_may);
	
	if (variable_pos != -1) 
	 {
	    var pos_separador = url.indexOf("&", variable_pos);
		
		if (pos_separador != -1) 
		{
		    return url.substring(variable_pos + variable_may.length + 1, pos_separador);
		} else
		{
		    return url.substring(variable_pos + variable_may.length + 1, url.length);
		}
	 } else 
	   {
	      return "NO_ENCONTRADO";
	   }
  }
</script>
Se que es un poco raro, pero funciona, de todas formas si sabeis uno mejor no vendria mal.

Despues saco 3 variables (puesto al principio del body):
Código:
<script language="JavaScript">
  var pag = obtener_valor("pag");
  var dia = obtener_valor("dia");
  var imagen = obtener_valor("imagen");
  </script>
Tengo unos if echos dependiendo de que valor tenga cada variable hace una cosa u otra.

En ocasiones cuando solo existen dia e imagen me e dado cuenta de que si pongo este enlace
Código:
<a href="index.html?dia=2006/12/31&imagen=pagimg2.html">algo</a>
me saca que:
Dia es = 2006/12/31 (bien)
Imagen = pagimg2.html (bien)
pag= mg2.html (mal)

creo que es porque como el valor de imagen va a ser pagimg2.html, el codigo que lo lee cree que pag es como variable y mg2.html el valor, la i no se que hace con ella. No se como solucionarlo
Por lo demas va bien
Gracias y saludos.

Última edición por farve; 10/03/2007 a las 12:33 Razón: -
  #2 (permalink)  
Antiguo 10/03/2007, 12:48
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Mal lectura de las variables de la url

Pon que lo que tenga que entrar sea variable= , es decir, le pasas pag pero despues concatenale el igual, variable += "=";

si variable es: pag
al concatenar: pag=

y asi ya no te saldra eso.

Prueba y nos cuentas.

Saludos
  #3 (permalink)  
Antiguo 11/03/2007, 01:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Mal lectura de las variables de la url

Hola:

Me parece que te lo comenté en otro mensaje, pero te propongo una forma de recuperar las variables de la url:

var params = location.search.substr(1).split("&");
for (var i = 0, total = params.length; i < total; i ++)
window[params[i].split("=")[0]] = unescape(params[i].split("=")[1]);

También hay en las FAQs un script para lo mismo.

Si quieres una versión similar, se arreglaría fácilmente:

function obtener_valor(variable) {
var encontrado = "NO_ENCONTRADO";
for (var i = 0, total = params.length; i < total; i ++)
if (params[i].split("=")[0] == variable)
encontrado = unescape(params[i].split("=")[1]);
return encontrado;
}

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 12/03/2007, 06:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: Mal lectura de las variables de la url

hola,
caricatos, si el codigo ese ya lo probe pero no me funcionaba, ya puse otro post en el tema aquel, pero gracias
me imagino que es porque hice algo mal.

como seria el codigo completo??

esta la primera pagina, que deberia estar bien(o eso espero)
Código:
<html>
<head><title>pagina prueba1</title>
<body>
<a href="prueba2.html?pag=3.html">linka pagina prueba2</a>
</body>
</html>
lo que no me sale es la segunda pagina, en el ejemplo prueba2.html
he cogido el codigo del antiguo post pero me he dado cuenta de que es igual al "nuevo" pero puede que se te colase poner var??? he probado de las dos formas pero na

Código:
<html>
<head><title>prueba2</title>
<script>
function leerUrl() {
var parejas = location.search.substr(1).split("&");
for (var i = 0, total = parejas.length; i < total; i ++)
window[parejas[i].split("=")[0]] = unescape(parejas[i].split("=")[1]);
}
</script>
</head>
<body onload="leerUrl()>
<h1>prueba</h1>
<script type="text/javascript" >
document.write(pag);
</script>
me inmagino que me colare algo
si no es molestia dime el que
saludos!!!
  #5 (permalink)  
Antiguo 12/03/2007, 08:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Mal lectura de las variables de la url

Hola:

La función está perfecta, pero onload se ejecuta cuando se lee el final del body (</body>)... y cuando invocas a la variable pag, esta aún no existe...

Debes leer la url antes de usarla...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 12/03/2007, 12:56
 
Fecha de Ingreso: marzo-2005
Mensajes: 130
Antigüedad: 19 años, 1 mes
Puntos: 1
Re: Mal lectura de las variables de la url

ok gracias he puesto
Código:
<script>leerUrl()</script>
justo despues de body, y ya va

pero, tengo if donde le digo que si no existe haga tal.
con el antiguo codigo le ponia == "No_ENCONTRADO" con este nuevo codigo
he probado con pag == "" pero no va,

cual es el valor de una variable que no existe??
Gracias denuevo!!!
Saludos
  #7 (permalink)  
Antiguo 12/03/2007, 15:16
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 4 meses
Puntos: 3
Re: Mal lectura de las variables de la url

Creo que una variable que no existe es undefined.


Saludos.

PD:Da error al no estar definida.
  #8 (permalink)  
Antiguo 12/03/2007, 16:00
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Mal lectura de las variables de la url

Hola:

Prueba con:

if (window["pag"] == undefined) // no estoy seguro si debe entrecomillarse

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 12/03/2007, 16:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Mal lectura de las variables de la url

Hola:

También puedes definir tu obtener_valor() así:

function obtener_valor(variable) {
var encontrado = "NO_ENCONTRADO";
params = location.search.substr(1).split("&");
for (var i = 0, total = params.length; i < total; i ++)
if (params[i].split("=")[0] == variable)
encontrado = unescape(params[i].split("=")[1]);
return encontrado;
}


Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:47.