Ver Mensaje Individual
  #8 (permalink)  
Antiguo 13/08/2012, 15:42
909matt
 
Fecha de Ingreso: agosto-2012
Mensajes: 9
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Problema con formulario e innerHTML, PHP y Javascript

Cita:
Iniciado por emprear Ver Mensaje
Tu esquema es un poco confuso, por que hacer un innerHTML si tu php puede generar el mensaje por si mismo, faltaría saber si el form y la respuesta están integradas en un solo archivo o si son 2 distintos.
Si después de mostrar un mensaje querés agregar una redirección, entonces usas el stTimeout como te indiqué para dar tiempo a leer el mensaje


Ejemplo
formulario.php
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>titulo</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <?php
  10. if(!isset($_POST['procesar'])){
  11. ?>
  12. <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
  13. <input type="text" name="nombre" /><br />
  14. <input type="submit" value="contactar" name="procesar" />
  15. </form>
  16. <?php
  17. }else{
  18.  
  19. // envio email
  20. $mail = "correcto";
  21.  
  22. if($mail == 'correcto'){
  23. echo "<p>Tu mensaje ha sido enviado, en unos segundos serás redirigido a nuestra página principal</p>";
  24. echo <<< SCRIPT
  25. <script type="text/javascript">
  26. function redir(){
  27. window.location.href = "index.html";
  28. }
  29. setTimeout('redir()', 3000);
  30. </script>
  31. SCRIPT;
  32. }else{
  33. echo "<p>Se ha producido un error al enviar, <a href='". $_SERVER['SCRIPT_NAME'] . "'>inténtar nuevamente</a></p>";
  34. }
  35.  
  36. }
  37. ?>
  38.  
  39. </body>
  40. </html>

Para verificar, cambia el valor de la variable $mail a otra cosa. Demás está decir que tu php, antes de enviar el email, debería hacer las validaciones correspondientes

Saludos

Gracias de nuevo pero esa no es la solución que yo quiero.
Mi formulario está en una página de wordpress, lo valido mediante un archivo js mío.
Tengo un div en el formulario en el que muestro los mensajes de error si algo está mal validado y lo que quiero es que cuando esté todo correcto, vaya a mi archivo php, envíe el formulario y que vuelva a la misma página mostrando en mi div que ya ha sido enviado.

Ya he probado con setTimeOut y no funciona.

Como digo, mi código funciona perfecto, envia los mensajes y valida, además si antes de:

document.getElementById('ErrMsg').innerHTML = "Mensaje enviado";

pongo un alert con lo que sea, da igual el texto, entonces además de funcionar a la perfección, muestra en mi formulario, en el div que tengo para los errores, el mensaje que yo quiero, si no pongo el alert, funciona perfecto pero no muestra el texto en el div.

Alguna idea de lo que hago mal?

Gracias y Saludos.