Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » JavaScript » Redirigir ventana desde un iframe Responder al tema
Nuevo tema


Página 1 de 1  [ 13 mensajes ] 
 
Nota 2007-08-07 10:27 @477

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
Redirigir ventana desde un iframe
¡Hola!

Estoy programando en PHP y JavaScript y tengo un problemilla, a ver, el usuario está editando unos datos y pulsa en el botón guardar y el script que guarda los datos se ejecuta, pero no muestra nada por pantalla. Sólo quiero que redirija al usuario a otra página. Uso META pero no me funciona:

Código:
echo' <META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://localhost/sitioPrueba/Alumnos/opcionesAlumno.php?DNIAlumno='.$dni.'">';


Porque en opcionesAlumno yo muestro la información en un iFrame, el código:

Código:
echo'<iframe class="pestana" name="tabIframe2" src="http://localhost/sitioPrueba/Alumnos/Personales/datosPersonales.php?DNIAlumno='.$dni.'"  marginheight="10" marginwidth="30" height="600" width="1040" frameborder="1"></iframe>';
echo'  </div>


Entonces lo que META me hace es que me carga la página bien, pero dentro del iFrame, y yo no quiero que me cargue la página dentro del iFrame porque me sale información repetida, quiero que me cargue el marco en el que está el iFrame.

Pero no sé como indicarle a la etiqueta META o usar otra etiqueta que me cargue bien la página.

Si pudierais ayudarme... Muchas gracias


Nota 2007-08-07 10:45 @489
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Tienes dos opciones:

1. Haces que al cliquear el botón enviar el formulario envíe las cosas a la ventana padre poniendo su target de la siguiente manera:

Syntax: [ Download ] [ Hide ]
  1. <form target="_top"> 


o

Syntax: [ Download ] [ Hide ]
  1. <form target="_parent"> 



2. En vez de realizar un meta refresh usas un JavaScript de la siguiente manera:

Syntax: [ Download ] [ Hide ]
Using javascript Syntax Highlighting
top.location = URL



Saludos

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2007-08-07 11:06 @504

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
Me funciona, pero eso me lo recarga en la página completa, yo quiero recargarlo sólo en un marco de esa página ¿se podria?


Nota 2007-08-07 11:30 @521
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Re: Redirigir ventana desde un iframe
Umm, ya no entiendo, tu dices:

marcosss escribió:
Entonces lo que META me hace es que me carga la página bien, pero dentro del iFrame, y yo no quiero que me cargue la página dentro del iFrame porque me sale información repetida, quiero que me cargue el marco en el que está el iFrame.


Y parece que el problema es que te está cargando la página dentro del iFrame ¿no es eso lo que quieres?

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2007-08-07 12:13 @551

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
si, pero a ver, en la página que contiene el iframe hay una parte que no está dentro del iframe, que la uso a modo de pestañas para moverse por las distintas opciones, y dentro del iframe cargo las distintas páginas según el usuario pulse en uno u otro lugar.
Pero con el META dentro del iFrame me carga la página entera, es decir, que me vuelven a salir todas las pestañas, y eso es lo que no quiero, que salgan las pestañas, sólo quiero que salga dentro del iframe la página que haya que cargar.

¿queda más claro ahora?


Nota 2007-08-07 14:11 @632
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
Yo no creo que haga falta nada de Meta para hacer un refresh y lleve a otro sitio, sino que el problema está en el origen.

El primer formulario que comentabas más arriba hace la llamada al script pero puede indicar cual es el objetivo en donde debe aparecer el resultado, y si el script del servidor que devuelve la llamada no es capaz o no debe de generar la página, puede por si mismo generar una cabecera HTTP tipo Location: y de esa manera te ahorras un meta refresh. El resultado saldrá en el frame indicado por el primer formulario.

_________________
JF^D Perl programming


Nota 2007-08-08 02:24 @142

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
He probado con Location, pero tengo el mismo problema, me carga dentro del iFrame toda la página nueva (hasta las pestañas que no quiero que me cargue), adjunto una imagen para mostrar lo que me da como resultado al ejecutar el Location.

Imagen

Una parte del código del script opciones alumno (donde se declaran las pestañas y el iFrame) es:
Syntax: [ Download ] [ Hide ]
  1. echo'&nbsp&nbsp <a class="tab" href="http://localhost/sitioPrueba/Alumnos/Academicos/medidasRecibidasCentro.php?DNIAlumno='.$dni.'" target="tabIframe2">Medidas recibidas en el centro</a>'; 
  2.  
  3. echo'&nbsp&nbsp <a class="tab" href="http://localhost/sitioPrueba/Alumnos/Grupos/gruposAlumno.php?DNIAlumno='.$dni.'" target="tabIframe2">Grupos a los que pertenece</a> 


Antes en el resto del código de opcionesAlumnos se han definido todos los href de todas las pestañas.

Aqui muestro el código para que cuando el usuario pulse por ejemplo sobre la pestaña medidasRecibidasCentro se me muestre en el iFrame tabIFrame2.

Syntax: [ Download ] [ Hide ]
  1. echo'<iframe class="pestana" name="tabIframe2" src="http://localhost/sitioPrueba/Alumnos/Personales/datosPersonales.php?DNIAlumno='.$dni.'" marginheight="10" marginwidth="30" height="600" width="1040" frameborder="1"></iframe>'; 


Y aquí está declarado el iFrame, que por defecto le digo que al principio me muestre datosPersonales (aun estamos en opcionesAlimno).

Y ahora viene el problema, estoy por ejemplo guardando los datosFamiliares del alumno, y al terminar, como es un script que no escribe nada quiero que me redirija por ejemplo a mostrar lo que mostramos por defecto al principio, datosPersonales, pero no me sale y lo he intentado de múltiples formas:

- <META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://localhost/sitioPrueba/Alumnos/opcionesAlumno.php?DNIAlumno='.$dni.'">: el resultado es el mismo que en la imagen, me vuelve a mostrar todas las pestañas.
- <script>top.location ="http://localhost/sitioPrueba/Alumnos/opcionesAlumno.php?DNIAlumno='.$dni.'"</script> me muestra todo bien, no me muestra las pestañas ya, pero me lo muestra en una página completa, no en el marco correspondiente (la página tiene 3 marcos y todo de lo que estoy hablando tiene que aparecer en el marco principal).
- <script>history.go(0)</script> Me pregunta que la página que intento ver tiene POSDATA...

Como veis estoy un poco perdido con este tema, no sé como seguir, espero que el problema quede bien explicado, si pudierais echarme una mano... Muchas gracias


Última edición por marcosss el 2007-08-08 05:21 @264, editado 1 vez en total

Nota 2007-08-08 04:50 @243

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
Creo que ya lo tengo, en vez de llamar a opcionesAlumno llamo a datosPersonales aunque no me funciona del todo, porque no me refresca las pestañas, yo para refrescar hasta ahora usaba un history.go(0) que se ejecutaba con un onclic en un botón. Ahora lo pongo después de redirigir (es decir, sin el onclic, se ejecutaría directamente) pero me sale que la página contiene POSTDATA... ¿cómo podría hacer para refrescar el marco sin que me saliera el mensaje de POSTDATA?


Nota 2007-08-08 06:01 @292
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
En teoría, valdría con hacer que el script devolviera un Location: del href de datosPersonales, que es lo que comentas ahora.

Pero ahora lo que quieres es que refresque además el estado de las pestañas, que creo que te refieres a las del menú izquierdo. No veo otra opción que recargar toda la página para que los menús aparezcan con la opción de datos personales pulsada, como si la hubiera pulsado un usuario. O hacer que el menú esté en otro iframe o div y cambiar su contenido.

Si, por ejemplo, el método de pulsación de los botones es un procedimiento hecho en JavaScript que hace el sistema de cambio de imagen del botón (y de toda la barra de navegación), quizás sea tan fácil como llamar a ese método como si fuera una pulsación normal.

_________________
JF^D Perl programming


Nota 2007-08-08 06:11 @299

Perlero Nuevo
Registrado: 2007-05-14 06:23 @307
Mensajes: 87
No me refiero a las pestañas de la izquierda, digo las de la parte superior, se ven en la imagen: Datos Personales, Datos Familiares, Datos académicos anteriores... que en realidad se escriben en opcionesAlumno, justo antes del iFrame (en algún mensaje anterior he puesto el código de cómo muestro medidasRecibidasCentro y gruposAlumno). Es que por lo que quiero que las refresque es porque por ejemplo en DatosFamiliares, si se eliminan, en las pestañas debe aparecer Crear Datos Familiares y no Datos Familiares.


Nota 2007-08-08 08:45 @406
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Creo que entiendo un poco más lo que necesitas. Ya ví cuales son los tres marcos que comentas, pero hay un detalle, el tercer iframe, es un hijo del segundo iframe, así que si refrescas la página del segundo iframe a fuerza también recargará el tercer iframe.

Si tu quieres cambiar el contenido del segundo iframe sin tener que recargar el tercer iframe entonces tendrás que buscar otra solución, pues lo que estás haciendo no te funcionará. Lo más seguro es que vas a necesitar usar Ajax, o de plano replantear todo el problema.


Saludos

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2007-08-08 09:03 @419
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10272
O quizás la solución sea hacer tres frames separados sobre una misma página. Casi mejor que los convierta a <div>... no sé... se me ocurren varias formas...

Yo tengo una página parecida, hecha con frames, en el que se da un caso parecido: http://www.arfacyl.org, en la sección Adopción Internacional. Aparecen hasta tres niveles de detalle (en el submenú Fin del proceso).

_________________
JF^D Perl programming


Nota 2007-08-08 09:51 @452
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
explorer escribió:
O quizás la solución sea hacer tres frames separados sobre una misma página. Casi mejor que los convierta a <div>... no sé... se me ocurren varias formas...


Tienes razón, creo que lo mejor es que en vez de usar iframes, use frames, de esa manera puede refrescar cualquiera sin afectar el otro.

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Responder al tema  [ 13 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO