Estoy escribiendo código en PHP donde la respuesta de una condición if llama a una función Javascript con SweetAlert2. Básicamente, cuando se actualiza un registro, el botón llama a una función de PHP y esta llama a una función de Javscript si se ejecuta correctamente. Esta función javascript es una SweetAlert2 que muestra un mensaje y debe esperar a que haga clic en el botón "Aceptar" para redirigir al usuario a otra URL.
El problema es que el mensaje aparece muy rápido y no espera para hacer clic; se cierra solo. La redirección tampoco funciona.
Ya probé esta función de javascript desde el código PHP y funciona bien.
¿Cómo puedo arreglarlo?
codigo PHP
function UpdateReg() { $Titulo = $_REQUEST['f_titulo']; $Descricao = $_REQUEST['f_desc']; $Valor = $_REQUEST['f_valor']; $cod = $_GET['cod']; if ($GLOBALS['$conexao']->connect_error) { die("Falha de Conexão: " . $GLOBALS['$conn']->connect_error); } $sql = "UPDATE produtos set titulo = '$Titulo', descricao = '$Descricao', valor = '$Valor', WHERE cod_produto = $cod"; if (mysqli_query($GLOBALS['$conexao'], $sql)) { echo "<script>ChangeOk('produto')"; } else { echo "Erro: " . $sql . "<br>" . mysqli_error($GLOBALS['$conexao']); } mysqli_close($GLOBALS['$conexao']); } }JavaScript
function ChangeOk(tipo) { Swal.fire({ title: "Feito!", text: "Registro alterado com sucesso", icon: 'success', showConfirmButton: true }).then((result) => { if (result.isConfirmed) { window.location = "home.php?tipo=" + tipo } }) }Como PHP es un lenguaje del lado del servidor y Javascript es un lenguaje del lado del cliente, es posible que tenga algunos problemas con el tiempo. Su eco en php es la primera línea que generará su documento. Verás esto cuando verifiques el código fuente de la página en tu navegador.
Estoy pensando que el problema aquí podría ser que llamas a ChangeOk('produto') demasiado rápido. Es posible que su biblioteca y la función javascript no se hayan cargado por completo mientras ya la llama desde el eco con php. Si ese es el caso, podría ayudar decirle a Javascript que necesita ejecutar la llamada después de cargar todo el código.
echo "<script> window.addEventListener('load', ChangeOk('produto')); </script>";