Avatar Image
Usuario habitual
Usuario habitual

Hola amigos, encontre este script para poder pasar variables de una pagina a otra, pero no me funciona, espero q alguien pueda revisarlo y me pueda decir q esta mal. gracias.

<!-- PRIMER PASO: Copiar este formulario en el archivo prev1.htm -->

<form type="get" action="prev2.htm">
<div align="left"><table border="1" bgcolor="#E8E8E8" cellspacing="0" cellpadding="0"
width="250">
<tr>
<td width="80"><small><font face="Arial">Nombre:</font></small></td>
<td width="170"><input type="text" name="nombre" size="14"></td>
</tr>
<tr>
<td width="80"><small><font face="Arial">Apellido:</font></small></td>
<td width="170"><input type="text" name="apellido" size="14"></td>
</tr>
<tr>
<td width="80"><small><font face="Arial">E-mail:</font></small></td>
<td width="170"><input type="text" name="email" size="14"></td>
</tr>
<tr>
<td bgcolor="#C0C0C0" width="80">&nbsp;</td>
<td bgcolor="#C0C0C0" width="170"><small><font face="Arial"><input type="submit"
value="Vista previa"></font></small></td>
</tr>
</table>
</div>
</form>



<!-- SEGUNDO PASO: Copiar este script en el archivo prev2.htm -->
<!-- Dentro de HEAD -->

<script LANGUAGE="JavaScript">

function getParams() {
var idx = document.URL.indexOf('?');
var params = new Array();
if (idx != -1) {
var pairs = document.URL.substring(idx+1, document.URL.length).split('&');
for (var i=0; i<pairs.length; i++) {
nameVal = pairs.split('=');
params[nameVal[0]] = nameVal[1];
}
}
return params;
}
params = getParams();

</script>


<!-- Dentro de BODY -->

<script LANGUAGE="JavaScript">

nombre = unescape(params["nombre"]);
apellido = unescape(params["apellido"]);
email = unescape(params["email"]);

document.write("Nombre = " + nombre + "<br>&quotGiño;
document.write("Apellido = " + apellido + "<br>&quotGiño;
document.write("E-mail = " + email + "<br>&quotGiño;

</script>


Le agradecere mucho a la persona q pueda encontrar el error.

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

A ver, yo veo varias cosas que no me cuadran, veámoslas:

var pairs = document.URL.substring(idx+1, document.URL.length).split('&');

Primero de todo, debes recordar que las cadenas se numeran de 0 a N-1, mientras que la propiedad length de dichas cadenas vale N. Así que en substring, deberías poner "document.url.length-1". En todo caso, tu quieres hacer substring desde pasado el ? hasta el final. Si omites el segundo parámetro de substring, la función ya te devolverá la cadena resultado desde el punto de inicio que le das hasta el final.

A parte, en esa instrucción, lo del split lo lía todo más. Ahora no recuerdo en qué orden se sucederían las instrucciones que efectúas sobre la cadena; así que yo de ti haría los dos pasos por separado en vez de en la misma instrucción. En definitiva, que lo dejaría así:

var cadena_aux = document.URL.substring(idx+1);
val pairs = cadena_aux.split('&');

==============================================================

nameVal = pairs.split('=');
params[nameVal[0]] = nameVal[1];

La primera línea tiene un valor, en cuanto a pairs no es una variable única de cadena sino una matriz. NO le puedes aplicar directamente un split. De hecho, lo que te olvidaste fue ponerle el índice i (que para algo pusiste el for).

Pero luego está la segunda instrucción, en donde no estoy seguro de que sea un error. Sé que estás haciendo una matriz asociativa, al estilo PHP, pero me parece recordar que eso NO se podía hacer en JavaScript (vamos, que los índices de una tabla siempre deben ser números o variables numéricas, nunca nombres). Además, aunque se pudiese hacer uan amtriz asociativa, no la necesitas para nada aquí; tu ya sabes qué variable se guardará en cada casilla porque siempre te las van a pasar en el mismo orden.

En definitiva, yo todo este cacho de código lo dejaría como sigue (el for se queda igual, sólo cambio el contenido):

nameVal = pairs[i].slice(indexOf('=')+1);
params[i] = nameVal;

==============================================================

Y como último consejo; yo aplicaría el unescape a TODA la URL al principio de la función getParams. Personalmente, no me gusta trabajar con URL escapadas y desescaparlas al final del todo. Además, te ahorras código, porque sólo deberías hacer una llamada a unescape en vez de tres como tu haces.

Un saludo. Sonrisa

User 28318
User 28318
Machacateclados
Machacateclados

Mas que buscar errores en el código te voy a mostrar cómo lo hago yo:

en el HEAD de prev2.htm:

Codigo:

<script type="text/javascript" language="JavaScript">
<!--
// autor: Jallmalatesta @ empacho-de-melon.foros.st
var datosGET = location.search;
// datosGET = "?nombre=XX&apellido=YY&email=ZZ"
datosGET =datosGET.substr(1, datosGET.length);
// datosGET = "nombre=XX&apellido=YY&email=ZZ"
var parejasGET = datosGET.split("&&quotGiño;
// parejasGET es un array con parejasGET[0] = "nombre=XX", parejasGET[1]="apellido=YY", parejasGET[2]="email=ZZ"
var nombreGET = parejasGET[0].split("=&quotGiño;
var apellidoGET = parejasGET[1].split("=&quotGiño;
var emailGET = parejasGET[2].split("=&quotGiño;
// nombreGET es un array con nombreGET[0]="nombre" y nombreGET[1]=XX
// apellidoGET es un array con apellidoGET[0]="apellido" y apellidoGET[1]=YY
// emailGET es un array con emailGET[0]="email" y emailGET[1]=ZZ
// -->
</script>


y en el BODY:

Codigo:

<script type="text/javascript" language="JavaScript">
<!--
document.write ("NOMBRE: " + nombreGET[1]);
document.write ("<br>&quotGiño;
document.write ("APELLIDO: " + apellidoGET[1]);
document.write ("<br>&quotGiño;
document.write ("EMAIL: " + emailGET[1]);
// -->
</script>


Funciona!!!!!!!!

Yo uso algo parecido en:

https://empacho-de-melon.webcindario.com/favoritas/index.html?0

Salu2
Avatar Image
Usuario habitual
Usuario habitual

Muchas gracias a ambos, sus indicaciones me ayudaron mucho, ya resolvi mi problema.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 29/Ago/2005, 18:51
KSSA vhsP18kSep/05
Por: , el 21/Dic/2004, 10:28
Lucifer1703kDec/04