2011-12-02 22 views
14
<?php 
    /* ... SQL EXECUTION TO UPDATE DB ... */ 
?> 

<form method = "post" 
     action = "<?=$_SERVER['php_self']?>" 
     onSubmit= "window.close();"> 
    ... 
    <input type="submit" value="submit" /> 
    <input type="reset" value="reset" /> 
</form> 

Deseo cerrar la página después de enviar el formulario. Después de ejecutar el código anterior, la página se cierra después de hacer clic en el botón Enviar, pero el SQL no se ejecuta.Cómo cerrar la pestaña del navegador después de enviar un formulario?

¿Alguien me puede ayudar? ¡Gracias por adelantado!

Respuesta

37
<?php  
    /* ... SQL EXECUTION TO UPDATE DB ... */ 

    echo "<script>window.close();</script>"; 
?> 

y quitar la window.close() de la forma onsubmit caso

+2

que no trabajaban – Dimple

+0

tal vez cambiar a texto 'echo "' – HighTechProgramming15

+0

Eso ** funcionó ** me formó, pero no fue porque estaba usando la función 'header ('Location: text.php');' antes que yo ' Estoy tratando de cerrarlo, así que en caso de que esté usando un 'header' pero el script' window.close() 'en la página PHP que está redireccionando a ... (' text.php' en mi ejemplo) .. Espero que esto ayude. –

0

Esto se debe a que el evento onsubmit se activa antes de que se envíe el formulario.

Elimine su onSubmit y publique ese JavaScript en su script PHP después de haber procesado la solicitud. Está cerrando la ventana ahora mismo y cancelando la solicitud a su servidor.

1

Si tiene utilizar la misma página que la acción, no se puede utilizar onSubmit="window.close();" como se va a cerrar la ventana antes de que se recibe la respuesta. Tienes que mostrar dinámicamente un fragmento JS que cierra la ventana después de que se procesen los datos SQL. Sin embargo, sería mucho más elegante usar otra página como acción de formulario.

7

Eliminar onsubmit de la etiqueta form. Cambiar esta situación:

<input type="submit" value="submit" /> 

Para:

<input type="submit" value="submit" name='btnSub' /> 

Y escribir esto:

if(isset($_POST['btnSub'])) 
    echo "<script>window.close();</script>"; 
1

tratar onsubmit="submit(); window.close()"

0

Esto funcionó de maravilla para mí,:

$query = "INSERT INTO `table` (...or put your preferred sql stuff)" 
$result = mysqli_query($connect, $query); 
if($result){ 
    // If everything runs fine with your sql query you will see a message and then the window 
    //closes 
     echo '<script language="javascript">'; 
     echo 'alert("Successful!")'; 
     echo '</script>'; 
     echo "<script>window.close();</script>"; 
     } 
else { 
     echo '<script language="javascript">'; 
     echo 'alert("Problem with database or something!")'; 
     echo '</script>';   
     } 
+0

@CecileOlse n Gracias por la edición, no noté el error tipográfico ... – Macarrao

+0

Esto todavía no resuelve el problema imo. Estoy tratando de construir un pequeño sistema de registro para eventos más grandes. El registro se realiza escaneando códigos QR ("tickets"), y estoy tratando de minimizar la cantidad de clics. La alerta aún requerirá que mi equipo de registro haga esta interacción adicional (¡confirme/acepte la alerta)! – MahNas92

Cuestiones relacionadas