Foros del Web » Programando para Internet » Javascript »

Recarga de página padre sin mensaje de reenvío

Estas en el tema de Recarga de página padre sin mensaje de reenvío en el foro de Javascript en Foros del Web. Hola compañeros: Tengo un pequeño script que abre una pequeña ventanita tras pulsar un botón. con esto, y tras hacer sobre esta pequeña ventanita una ...
  #1 (permalink)  
Antiguo 02/05/2012, 04:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Recarga de página padre sin mensaje de reenvío

Hola compañeros:

Tengo un pequeño script que abre una pequeña ventanita tras pulsar un botón. con esto, y tras hacer sobre esta pequeña ventanita una operación de inserción en base de datos (mediante PHP) lo que quiero es que la página "padre" se me actualice y que se vea en ella ese nuevo dato introducido.

He navegado por este foro y por otros y las opciones que hay pasan por usar el "window.opener.reload()" pero esta opción lo que hace es sacar un mensaje del navegador para "reenviar la información", y no quiero que salga esto, es decir me gustaría que la página "padre" se refrescase automáticamente.

¿Es posible ello? De ser así, ¿cómo lograrlo? Muchísimas gracias de antemano.
  #2 (permalink)  
Antiguo 02/05/2012, 07:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Recarga de página padre sin mensaje de reenvío

Tenes la opción de usar AJAX ?
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #3 (permalink)  
Antiguo 02/05/2012, 07:43
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Recarga de página padre sin mensaje de reenvío

Hola chinanzio:

AJAX: Sí tengo la opción, pero si se puede hacer de otra forma que no sea usándolo... lo preferiría. Si no hay otra, pues supongo que no me quedará más remedio!

Gracias!
  #4 (permalink)  
Antiguo 02/05/2012, 08:08
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Recarga de página padre sin mensaje de reenvío

Ok, existe una solución.
El problema que tenes es que la pagina padre viene de un post, generalmente del submit de un formulario, entonces cuando haces el reload() el navegador intenta hacer el submit del formulario otra vez. Estoy en lo cierto ??
Si esto es asi tenes una opción que a lo mejor te sirve.
Lo que se hace en estos casos es que la respuesta del post que genera la pagina padre no sea directamente la página, si no que sea una redireccion a la pagina con un header 301.
Esto en general es una buena práctica de programación, te ahorras los resubmit de los formularios cuando el usuario usa las flechas del navegador para ir para atras y para adelante

Casi nunca me explico bien , no hay problemas en que me lo digas :P
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #5 (permalink)  
Antiguo 03/05/2012, 07:20
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Recarga de página padre sin mensaje de reenvío

Hola de nuevo chinanzio, gracias por tu interés. Te cuento cómo lo tengo montado:

El "script padre" tiene una serie de botones, cada uno con un evento onclick que hace window.open que llama al segundo script (el que monta la otra página en la nueva ventana).

La ventana "hija" es un simplísimo formulario para insertar en BD un elemento. Se realiza la inserción y una vez se hace correctamente, añado esto a la página:

Código:
<script languaje='javascript' type='text/javascript'>
window.opener.location.reload();window.close();
</script>
Y es por el "reload" indicado por lo que sale el mensajito de "reenviar la información" que comentaba, que no quiero que salga.

Teniendo esto, ¿se pueden hacer las cosas que me comentabas? Gracias!
  #6 (permalink)  
Antiguo 03/05/2012, 07:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Recarga de página padre sin mensaje de reenvío

Hla kabe_jrr, si, se puede.
Decime si estoy en lo correcto:
Llamo paginaA a la página donde están los botones
páginaB al popup
y paginaX a la pagina anterior a paginaA

Yo estoy suponiendo que para pasar de paginaX a paginaA hay un submit de un formulario
Entonces cuando haces el reload desde la páginaB el navegador hace exactamente lo mismo que si estubieras pasando de paginaX a paginaA, osea otra vez el submit

La solución que propongo es que en lugar de que el resultado del submit del formulario de la paginaX sea la paginaA, que sea una respuesta con redirección (si no sabes como hacer esto te lo puedo explicar). Ahora cuando hagas el reload el navegador no hará el submit y por lo tanto no aparecerá el cartel de reenviar.

Se entiende ?
Saludos
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #7 (permalink)  
Antiguo 03/05/2012, 08:34
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Recarga de página padre sin mensaje de reenvío

Creo que más o menos te he entendido, aunque...

Cita:
Iniciado por chinanzio Ver Mensaje
Yo estoy suponiendo que para pasar de paginaX a paginaA hay un submit de un formulario
Qué va, no hay paginaX, de momento ando con pruebas y accedo directamente a la paginaA (aún no lo sé pero más adelante es posible que haya una paginaX pero que accederá a paginaA mediante enlace, no mediante submit)

El reload y el close lo tengo puesto en la paginaB, para que el reload recargue la paginaA.
  #8 (permalink)  
Antiguo 03/05/2012, 09:08
 
Fecha de Ingreso: marzo-2007
Mensajes: 82
Antigüedad: 17 años, 1 mes
Puntos: 21
Respuesta: Recarga de página padre sin mensaje de reenvío

A lo mejor este ejemplo te sirve:

en la pagina Principal
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <title>Insert title here</title>
  5. </head>
  6.     <script>
  7.     alert("Pagina principal cargando ...");
  8.  
  9.     function abrePopup() {
  10.         var day = new Date();
  11.         var id = day.getTime();
  12.         window.open("popup.html", id, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=600,height=400');
  13.     }
  14.     </script>
  15.  
  16.     <input type="button" value="abre popup" onclick="abrePopup();"/>
  17. </body>
  18. </html>

En popup.html

Código HTML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>Insert title here</title>
  6. </head>
  7. function reloadPrincipal() {
  8.     window.opener.location.reload();
  9. }
  10. <input type="button" value="reload principal" onclick="reloadPrincipal();" />
  11. </body>
  12. </html>
__________________
Hazle un favor a tu cerebro y juega Ajedrez online
Chess online
  #9 (permalink)  
Antiguo 03/05/2012, 09:16
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Recarga de página padre sin mensaje de reenvío

Ya lo he solucionado chinanzio!!

¿Sabes cuál era el problema? que en paginaA tenía puesta la etiqueta <form> (con su cierre al final de la página), con lo cual lógicamente la información se enviaba a paginaB, es decir se hacía el "submit"! cuando realmente eso no me hacía falta porque lo que ocurría era un evento (window.open) y no un "submit"...

Quitanto las etiquetas de <form ...> y </form> ya no sale el mensajito de reenvío de información, pero sí que sale el elemento nuevo ya cargado en paginaA.

Muchas gracias por la información y la ayuda!

Etiquetas: mensaje, padre, página, php, recarga
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 19:55.