Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2015, 19:16
Avatar de berkeleyPunk
berkeleyPunk
 
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 9 meses
Puntos: 22
Pregunta Error con múltiples formularios AJAX-JQUERY en un un solo documento

Hola!

La idea: queremos 2 formularios en un HTML, y un archivo process.php que procese los valores de los formularios.

El problema: los 2 formularios funcionan bien, por separado. Es decir, siempre y cuando el código del otro esté comentado. Pero si descomento los 2, ninguno funciona. Sale parsererror.

El siguiente script aparece 2 veces donde están los formularios, uno para cada <form>; la única diferencia es el nombre del selector:
Código Javascript:
Ver original
  1. $("#forma_1").on("submit", function(e) {
  2.     e.preventDefault();
  3.     var datos = $("#forma_1").serializeArray();
  4.     $.ajax({
  5.         type: "POST",
  6.         dataType: "json",
  7.         url: "process.php",
  8.         data: datos,
  9.         beforeSend: function() {
  10.             // ...
  11.         },
  12.         success: function(response) {
  13.             // ...
  14.         },
  15.         complete: function(jqXHR, estado) {
  16.             // ...
  17.         }                  
  18.     });
  19. });

He aquí el script dentro del process.php:
Código PHP:
// Aquí van de una vez todas las variables de los inputs
$nombre   $_POST["nombre"];
$ciudad   $_POST["ciudad"];
$cliente  $_POST["cliente"];
$articulo $_POST["articulo"];
$forma    $_POST["forma"];        // Utilizo este input hidden para identificar al formulario

$conexion = new mysqli("localhost""root""""claves_foraneas2");
$query1   "INSERT...";
$query2   "INSERT...";
$query3   "SELECT...";
$query4   "SELECT...";

if (
$forma == "forma_1") {
    if ( 
$conexion->query($query1) ) {
        if ( 
$resultado $conexion->query($query3) ) {
            
// ...
        
}
    }
}

else if (
$forma == "forma_2") {
    if ( 
$conexion->query($query2) ) {
        if ( 
$resultado $conexion->query($query4) ) {
            
// ...
        
}
    }

Puesto que los formularios funcionan perfectamente por separado, no vi la necesidad de hartar la vista incluyendo el código dentro de los if. En este sentido, imagino que el problema está en lo demás. Pero todo se ve bien... ¿no?

Última edición por berkeleyPunk; 16/05/2015 a las 19:23