Necesito modificar unos datos en la BBDD, pero tengo un problema con el formulario que cumple esa función.
La cuestión es que cuando envío los datos por AJAX (jQuery), cuando uno de los campos está vacío, al hacer click en el botón de "submit" simplemente no hace nada. Pero si envío ese mismo formulario con el "action" vacío (para que actúe sobre la misma página) y le pongo el mismo código PHP, sí lo envía, y me muestra el campo correspondiente como vacío.
Ejemplo con código:
index.php
Código PHP:
Ver original
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Prueba form</title> <script src="jquery-2.1.1.min.js"></script> </head> <body> <form method="POST" id="form-mod" accept-charset="utf-8" enctype="multipart/form-data"> <div class="etiqueta-panel">Nuevo código</div> <input type="text" name="nuevo_codigo" class="in-panel" id="nuevo_codigo" maxlength="9" autocomplete="off" /> <div class="etiqueta-panel">Nueva descripción</div> <input type="text" name="nueva_descripcion" class="in-panel" id="nueva_descripcion" maxlength="50" autocomplete="off" /> <input type="submit" name="submit" class="boton-principal" value="Modificar" /> </form> <hr> <div id="mensaje-mod"></div> <script> $(document).ready(function(){ $("#mensaje-mod").hide(); $("#form-mod").on("submit", function(e){ e.preventDefault(); var formData = new FormData(document.getElementById("form-mod")); $.ajax({ url: "mod.php", type: "POST", dataType: "HTML", data: formData, cache: false, contentType: false, processData: false }).done(function(echo){ if ($("#form-mod input,textarea").val() != "") { $("#mensaje-mod").html(echo); $("#mensaje-mod").slideDown(500); }; }); }); }); </script> </body> </html>
mod.php
Código PHP:
Ver original
<?php $codigoNuevo = $_POST['nuevo_codigo']; $descripcionNueva = $_POST['nueva_descripcion']; ?>
Entonces, si escribo en el primer campo (nuevo_codigo) A y en segundo (nueva_descripcion) B, recibo esto:
Pero si no escribo nada en primer campo y algo en el segundo, simplemente no devuelve nada:
(nótese el botón siendo apretado)
O sea, no cambia nada. Sin embargo, si veo las peticiones al servidor, sí que envía los datos.
PERO si hago lo siguiente, sí que me muestra los datos vacíos...
Código PHP:
Ver original
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Prueba form</title> <script src="jquery-2.1.1.min.js"></script> </head> <body> <form method="POST" action="" id="form-mod" accept-charset="utf-8" enctype="multipart/form-data"> <div class="etiqueta-panel">Nuevo código</div> <input type="text" name="nuevo_codigo" class="in-panel" id="nuevo_codigo" maxlength="9" autocomplete="off" /> <div class="etiqueta-panel">Nueva descripción</div> <input type="text" name="nueva_descripcion" class="in-panel" id="nueva_descripcion" maxlength="50" autocomplete="off" /> <input type="submit" name="submit" class="boton-principal" value="Modificar" /> </form> <hr> <?php $codigoNuevo = $_POST['nuevo_codigo']; $descripcionNueva = $_POST['nueva_descripcion']; }; ?> <div id="mensaje-mod"></div> </body> </html>
¿Cómo se puede solucionar esto? No se qué problema puede haber, y necesito enviar los datos por AJAX sí o sí...
jrasias d ante braso