Foros del Web » Programando para Internet » Javascript »

recoger variables por get

Estas en el tema de recoger variables por get en el foro de Javascript en Foros del Web. cómo recojo una variable enviada con get Ejemplo: ventana1.htm?encontrada=true Cómo recojo encontrada en ventana1?...
  #1 (permalink)  
Antiguo 30/06/2004, 13:00
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
recoger variables por get

cómo recojo una variable enviada con get
Ejemplo:
ventana1.htm?encontrada=true

Cómo recojo encontrada en ventana1?
  #2 (permalink)  
Antiguo 30/06/2004, 18:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola GG:

con location.search consigues el string que sigue a la dirección (a partir del "?")...

Entonces puedes sacar la línea de parámetros con location.search.substring(1)...

Yo suelo poner split("&") para distinguir los parámetros y split("=") para separar el nombre de la variable de su valor...

Si necesitas un ejemplo, avisa...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 01/07/2004, 07:24
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
Gracias, caricatos.
En realidad creo que sí necesitaría un ejemplo.
Es que no tenía el placer de conocer a don split. Él, entonces, separa según lo que aparece entre paréntesis, correcto?
Otra duda, esa variable, se guarda aunque yo actualice la página?
Es que quiero mandar más variables desde otras páginas.
Te explico,
Quiero hacer una especie de Dónde está Wally... o la búsqueda de un personaje escondido en el sitio. Cada vez que se encuentre se hace clic y envía una variable de personaje1=visible a la ventana 1.htm. En la ventana uno, recojo las variables y cambio el estado de los monos encontrados (de opaco a claro), cuento si ya encontraron todos y si lo hicieron, se despliega un formulario.
Funcinará si lo hago por get, no?
  #4 (permalink)  
Antiguo 02/07/2004, 00:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Voy a poner un ejemplo sencillo de recogida de variables:
var entradas = location.search.substring(1).split("&");

Para una dirección del tipo:
www.tudominio.com/index.html?var1=valor1&var2=valor2
el substring recoge lo que hay en azul, y el split deja finalmente entradas como un array así:
var entradas = ["var1=valor1", "var2=valor2"];

A partir de aquí tienes que recorrer el array y hacer las asignaciones, que pueden hacerse con un eval...

for (dato in entradas)
eval("'" + dato.split("=")[0] + ' = \"' + dato.split("=")[1] + '\"');

Supongo que si no me equivoqué en el uso de las comillas o la sintaxis, puedes usar el código sin problemas...

También hay una FAQ que puso KarlanKas (¡Hola !) sobre el tema: http://www.forosdelweb.com/showpost....&postcount=184

La idea que tienes en mente parece muy interesante... espero que nos vayas poniendo al día de tus progresos
Lo de guardar las variables no creo que te sirva ya que las sucesivas llamadas las iría refrescando... pero si son valores añadidos en la URL original te podría servir.
tal vez te pueda servir el uso del sistema de marcos más o menos así:
window.frames["laVentana"].document.varx = "valorx";

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 02/07/2004, 17:32
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
Me falta el cuento de mantener las variables, pero por lo menos ya logro enviarlas y cambiar el estado de las imágenes.
Cada vez que se hace clic en una mosca se envia por get la variable:
vmosca1=true
En otra, vmosca2=true y así sucesivamente.
Las moscas están repartidas por el sitio.

Código:
var vmosca1;
var vmosca2;
var vmosca3;
var vmosca4;
var vmosca5;
var enviado=location.href.split("?"); 
var igualdades=enviado[1].split("&"); 
for(a=0;a<igualdades.length;a++){ 
igualdades[a]=igualdades[a].split("+").join(" "); 
var valores=igualdades[a].split("="); 
eval(valores[0]+"='"+valores[1]+"'"); 
} 
var global;
function moscas(){
if(vmosca1=="true"){
mosca1.src="img/mosca.gif";
global++;
}
if(vmosca2=="true"){
mosca2.src="img/mosca.gif";
global++;
}
if(vmosca3=="true"){
mosca3.src="img/mosca.gif";
global+1;
}
if(vmosca4=="true"){
mosca4.src="img/mosca.gif";
global++;
}
if(vmosca5=="true"){
mosca5.src="img/mosca.gif";
global++;
}
if(global>=5){
window.open("ventana1.htm","ventana2","toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,status=no,width=300,height=340,top=100,left=100")}
}
Voy a probar el cuento de enviar las variables a un marco de la ventana.
Ojalá me resulte

Caricatos:
Muuuchas gracias, es un placer encontrarte después de haberte conocido en el foro de las hojas de estilo.
Verás del css me vi obligada a complementar concoimientos con javascript.
  #6 (permalink)  
Antiguo 02/07/2004, 18:33
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
y si cambiara la pregunta por recoger variables desde otra página, sin tener que enviarlas?
  #7 (permalink)  
Antiguo 02/07/2004, 19:13
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Lo de poner "true" puede dar el mismo resultado que cualquier otra cadena... con el clásico "0"/"1" te ahorras unas letras... te lo digo porque sin las comillas es un valor booleano y con las comillas solo texto...

Tal vez te interese poner en el action algo así como location.href para que se "acumulen" los valores, pero el tratamiento sería un pelín complejo ya que podría repetirse los "?" en la URL...

Se me ocurre que para simplificar podrías usar una sola cadena y que sea el único parámetro que se envíe... el tratamiento get tendría que ser el mismo, pero si el identificador de cada mosca fuese solo una letra o dígito, tan solo tendrías que recorrer la cadena y mostrar los elementos que conicidan con cada letra de esa cadena/parámetro....

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 03/07/2004, 20:06
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
es que si la guardo en la URL al final, igual al mandar otra mosca, me limpiaría de nuevo la URL...
Yo creo que voy a optar por cookies.
Total se borran cuando se acaba la sesión, no?
  #9 (permalink)  
Antiguo 03/07/2004, 20:35
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
Tal vez algo así me ayude

Encontré en otro post sobre frames y variables una propuesta que era algo así como
Código:
<script>
function mandadatos(){
d1 = window.c.user.value;
d2 = window.c.password.value;
d3 = window.c.fecha_actual.value;
d4 = window.c.fecha_descativa.value;
d5 = window.d.perfil.value;

window.location = "alta.php?user="+d1+"&password="+d2+"&fecha_actual="+d3+"&fecha_descativa="+d4+"&perfil="+d5;
}
</script>
Servirá tratar de adaptarlo, no ?

Ya me imaginaba que esto de colocar "true" era muy imbecilillo.
Lo corregiré.
Gracias!
  #10 (permalink)  
Antiguo 05/07/2004, 03:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola otra vez:

Preparé un ejemplo de la manera que te comenté anteriormente: http://www.pepemolina.com/pruebas/prueba152.html
Se pasan los valores con el método get y se procesa la entrada para descubrir las imágenes...

El código de la página completa es este:

Código:
<html>
	<head>
		<style>
			img	{visibility: hidden;}
			h1	{text-align: center; color: blue; background-color: #eeeeee;}
			#a	{position: absolute; top: 300px; left: 100px; visibility: visible; cursor: pointer;}
			#b	{position: absolute; top: 150px; left: 100px; visibility: visible; cursor: pointer;}
			#c	{position: absolute; top: 300px; left: 200px; visibility: visible; cursor: pointer;}
			#d	{position: absolute; top: 300px; left: 400px; visibility: visible; cursor: pointer;}

		</style>
		<script language="JavaScript">
			<!--
				var actuales = "";
				function inicio()	{
					var URL = location.href.split("?");
					if (URL.length > 1)	{
						datos = URL[1].split("&");
						for (lectura in datos)	{
							actual = datos[lectura].split("=");
							switch (actual[0])	{
								case "mostrados":
									actuales = actual[1];
								break;
								otherwise:
								break;
							}
						}
					}
					with (document.forms["dibujos"])	{
						action = URL[0];
						mostrados.value = actuales;
						if (actuales != "")
							for (var i = 0, max = actuales.length; i < max; i ++)
								document.images[actuales.charAt(i)].style.visibility = "visible";
					}
				}

				function chequeo(yo)	{
					if (document.images[yo].style.visibility != "visible")	{
						with(document.forms["dibujos"])	{
							mostrados.value += yo;
							submit();
						}
					}
					else
						alert(document.images[yo].style.visibility);
				}
			//-->
		</script>
	</head>

	<body onload="inicio()">
		<h1>
			Buscando emoticones
		</h1>
		<form name="dibujos" method="get" action="">
			<input type="hidden" name="mostrados" value="">
			<div id="a" onclick="chequeo(this.id);" >
				<img name="a" src="miemoticon.gif" />
			</div>
			<div id="b" onclick="chequeo(this.id);" >
				<img name="b" src="miemoticon.gif" />
			</div>
			<div id="c" onclick="chequeo(this.id);" >
				<img name="c" src="miemoticon.gif" />
			</div>
			<div id="d" onclick="chequeo(this.id);" >
				<img name="d" src="miemoticon.gif" />
			</div>
		</form>
	</body>
</html>
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 05/07/2004, 09:38
Avatar de GG
GG
Usuario no validado
 
Fecha de Ingreso: febrero-2002
Ubicación: Santiago, Chile
Mensajes: 195
Antigüedad: 22 años, 2 meses
Puntos: 0
Por el momento lo hice con cookies

Ante la premura del tiempo, lo hice con asp y cookies, pero eso no quiere decir que no lo intente por javascript. Por lógica debería ir por ahí la solución (por la ejecución por le lado del usuario).

Estoy tratando de entender y aplicar tu código. Muchas gracias!

Ahí va mi papiro de asp

Código:
<%
Dim vmosca1
Dim vmosca2
Dim vmosca3
Dim vmosca4
Dim vmosca5
Dim global
Dim cadena
vmosca1=Request.QueryString("vmosca1")
vmosca2=Request.QueryString("vmosca2")
vmosca3=Request.QueryString("vmosca3")
vmosca4=Request.QueryString("vmosca4")
vmosca5=Request.QueryString("vmosca5")
if vmosca1="visible" then
response.cookies("vmosca1")="visible"
end if
if vmosca2="visible" then
response.cookies("vmosca2")="visible"
end if
if vmosca3="visible" then
response.cookies("vmosca3")="visible"
end if
if vmosca4="visible" then
response.cookies("vmosca4")="visible"
end if
if vmosca5="visible" then
response.cookies("vmosca5")="visible"
end if
vmosca1=Request.cookies("vmosca1")
vmosca2=Request.cookies("vmosca2")
vmosca3=Request.cookies("vmosca3")
vmosca4=Request.cookies("vmosca4")
vmosca5=Request.cookies("vmosca5")
%>
En cada imagen sólo coloqué

Código:
<%
if vmosca1="visible" then
global = global+1
%>
	<img src="img/mosca.gif" name="mosca1" width="71" height="65" id="mosca1">
<% else %>
	<img src="img/moscasn.gif" name="mosca1" width="71" height="65" id="mosca1">
<% end if %>
Seguiré en la lucha del javscript.
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 03:41.