Defiance Posted September 26, 2010 Report Share Posted September 26, 2010 Hola, espero que estén bien. Bueno, la cosa es que estoy haciendo una página en PHP (Mysql como bd), y estoy usando Javascript para hacer una validaciones. El formulario trata de ingresar un cliente, por tanto se ingresan los datos en unas cajas, y luego hay un botón (submit), que redirecciona a la misma página (lo que pasa es que el formulario para editar y agregar es el mismo, y dependiendo del acceso se le cambian algunas cosas, como el value del botón y una opción volver que aparece. La cosa, es que cuando estoy haciendo validaciones. Por favor, vean el siguiente código: if ($_REQUEST['boton']=="Ingresar") { $rut_cl=$_REQUEST['rut_cl']; $nom_cl=$_REQUEST['nom_cl']; $ciu_cl=$_REQUEST['ciu_cl']; $tel_cl=$_REQUEST['tel_cl']; $dir_cl=$_REQUEST['dir_cl']; $emp_cl=$_REQUEST['emp_cl']; $tip_cl=$_REQUEST['tip_cl']; if ($rut_cl == "") { ?> <script> window.alert("Falta ingresar el RUT del cliente"); history.back(); </script> <?php } elseif ($nom_cl == "") { ?> <script> window.alert("Falta ingresar el nombre del cliente"); history.back(); </script> <?php } elseif ($ciu_cl == "") { ?> <script> window.alert("Falta ingresar la ciudad del cliente"); history.back(); </script> <?php } elseif ($tip_cl == "") { ?> <script> window.alert("Falta ingresar el tipo de cliente"); history.back(); </script> <?php } else { $mysql_host = "localhost"; $mysql_database = "defiance";.... En Mozilla funciona "bien", el detalle, es que si me faltó un dato, y tira el mensaje, cuando hace el history.back(), los datos de las cajas se desaparecen. En Chrome, funciona aparentemente bien, pero al navegar un poco, meterme a otros formularios, insertar, lesear con las validaciones, etc, se cae en momentos puntuales, saliendo lo siguiente: Confirmar reenvío del formulario Para que esta página web pueda mostrarse correctamente se requieren los datos que has especificado anteriormente. Puedes enviar estos datos de nuevo, pero se repetirá cualquier acción que haya realizado la página anteriormente. Pulsa "Cargar de nuevo" para reenviar los datos y mostrar esta página Y eso, la verdad es que le he dado muchas vueltas, y no se como solucionarlo. Busqué en google, y en efecto, Chrome tiene problemas con el history.back, y el history.go. Si alguien tiene alguna forma de solucionarlo, o quizás me presenta una forma de validar menos complicada, ojala me pueda explicar (debo decir que, si no dejara esos history.back, por una cosa de estructura de página, el formulario queda en blanco, por eso necesito una solución de esa índole). Saludos. Link to comment Share on other sites More sharing options...
electronik_0 Posted September 26, 2010 Report Share Posted September 26, 2010 con history.go(-1); que te sale Link to comment Share on other sites More sharing options...
Defiance Posted September 26, 2010 Author Report Share Posted September 26, 2010 con history.go(-1); que te sale Pasa exactamente lo mismo, incluso probé con varios parámetros. Insisto que solo en Google Ghrome no funciona. http://www.google.com/support/forum/p/Chro...ec4d6&hl=en http://www.sitepoint.com/forums/showthread.php?t=627807 http://groups.google.com/group/Google_Webm...fcaf84336bac983 A muchos les ha pasado el mismo problema. Link to comment Share on other sites More sharing options...
electronik_0 Posted September 27, 2010 Report Share Posted September 27, 2010 con history.go(-1); que te sale Pasa exactamente lo mismo, incluso probé con varios parámetros. Insisto que solo en Google Ghrome no funciona. http://www.google.com/support/forum/p/Chro...ec4d6&hl=en http://www.sitepoint.com/forums/showthread.php?t=627807 http://groups.google.com/group/Google_Webm...fcaf84336bac983 A muchos les ha pasado el mismo problema. hacelo con php entonces header("Location: pagina_anterior.php"); puedes casturar la pagina de donde venia con las variables SERVER asi hace un post back atras o lo otro es con html puro Link to comment Share on other sites More sharing options...
Ra Posted September 27, 2010 Report Share Posted September 27, 2010 A los <script> ponle nombre y apellido... <script language="javascript" type="code/text"> Mmmhhhh... y ahora que recuerdo... parece que tuve un problema parecido... porqué no pruebas poniendo el alert y el back en una función y llamando a esa función desde un evento... onLoad por ejemplo... De todas formas lo muevo a Webmaster... :) Salu2. Link to comment Share on other sites More sharing options...
alvaroxz Posted September 27, 2010 Report Share Posted September 27, 2010 (edited) yo acabo de probar con java script:history.go(-1) y me funciono sin problemas. reviza si tienes el js activado en ese explorador Edited September 27, 2010 by alvaroxz Link to comment Share on other sites More sharing options...
rkstro Posted September 27, 2010 Report Share Posted September 27, 2010 Para que esta página web pueda mostrarse correctamente se requieren los datos que has especificado anteriormente. Puedes enviar estos datos de nuevo, pero se repetirá cualquier acción que haya realizado la página anteriormente. Pulsa "Cargar de nuevo" para reenviar los datos y mostrar esta página Este mensaje por lo general sale en cualquier navegador al intentar volver a una pagina a la cual accediste y le fue enviada informacion por el metodo POST, eso en realidad no se si sea un problema de chrome en realidad pero en en FF igual aparece un mensaje similar cuando intentas volver a cargar el una pagina a la que se le envio por metodo POST. Ejemplo: formulario.php --POST--> resultado.php --> otro.php Cuando envias la pagina a resultado.php hubo un envio de informacion por metodo POST, si tu estando en resultado.php te aparecera ese mensaje que te dice que para cargar el sitio se debe reenviar la informacion que se envio antes, con lo que se voleria a realizar la misma accion, por ejemplo se duplicaria un comentario si es que eso era lo que hacia el form. Ahora supongamos que ya estas en otra.php y por a,b,c motivos quieres volver atras, osea a resultado.php, esta ultima fue cargada luego de un envio POST, por lo que para volver a cargarla deberás reenviar la información de formulario. Por lo que realmente en si no creo que sea un problema, solo que para como quieres que funcione deberas buscar una manera alternativa de hacerlo. Se me ocurre que podrias hacer lo siguiente en el bloque donde colocas el java script: <script> window.alert("Falta ingresar el RUT del cliente"); location.url = <?php echo $_SERVER['HTTP_REFERER']; ?>; </script> Con eso se deberia redireccionar a la pagina anterior. Link to comment Share on other sites More sharing options...
axelstone Posted September 27, 2010 Report Share Posted September 27, 2010 Hola Y porque haces la validacion asi? Si haces una validacion con JS debes hacerla en la misma pagina del formulario, no en la que recibe los datos. No te digo tambien lo horroroso que es mezclar JS con PHP. Te dejo un plugin de Jquery -> http://bassistance.de/jquery-plugins/jquer...gin-validation/ Yo uso ese. Saludos! Link to comment Share on other sites More sharing options...
Defiance Posted September 28, 2010 Author Report Share Posted September 28, 2010 Ahahaha si. Lo que pasa es que nunca había usado javascript, y ahora recién estoy aprendiendo (solo, investigando en google). Bueno, al final pude solucionarlo, declaré una variable, y le pasé todos los valores de las cajas y demases (onda $refrescar.="&nom_cl=".$cliente['rut_cl']; y le di más datos claro, incluyendo una windows.location. Luego, en la valideación, lo puse de la siguiente forma (ejemplo): if ($cliente['nombre_cl'] == "") { echo '<script>'."\n"; echo ¡windows.alert("Falta ingresar ciudad del cliente");'."\n"; echo $refrescar; echo '</script>'; } Y ahí funcionó. Por cierto, muchas gracias por la ayuda, aprendí varias cosas con sus comentarios, y bueno, sé que es un tanto ortodoxo como lo hice, pero de a poco son este tipo de cosas las que hacen que uno aprenda y mejore. Saludos. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now