Tengo un formulario con el siguiente script:
<script> $(function(){ $("#enviar").click(function(){ var url = "mira.php"; // El script a dónde se realizará la petición. $.ajax({ type: "POST", url: url, data: $("#formcontract").serialize(), // Adjuntar los campos del formulario enviado. success: function(data) { $("#respuesta").html(data); // Mostrar la respuestas del script PHP. } }); return false; // Evitar ejecutar el submit del formulario. }); }); </script>
Que hace efecto a este formulario:
<?php echo '<div class="modal-header">'; echo '<button type="button" class="close" data-dismiss="modal">×</button>'; echo '<h4 class="modal-title">Seleccione Contrato</h4>'; echo '</div>'; { echo '<div class="modal-body">'; echo '<form name="formcontract" method="post" class="form-horizontal">'; echo '<div class="form-group">'; echo '<label class="col-sm-3 control-label" for="formGroup" id="contract">Contratos</label>'; echo '<div class="input-group col-sm-7">'; echo '<span class="input-group-addon"><span class="glyphicon glyphicon-list-alt"></span></span>'; echo '<select name="contrato" class="selectboxit" onchange="mostrarValor(this);">'; echo '<option selected="disabled">Selecciona un Contrato</option>'; foreach($incidencias as $cust) { echo '<option value="'.$cust->Num_distribucion.'-'.$cust->Num_dist_venta.'-'.$cust->Num_linea_operacion.'-'.$cust->Num_operacion.'">'.$cust->Num_contrato.' '.$cust->Cdad_disponible.'Kg de '.$cust->NombreProducto.'</option>'; } echo '</select>'; echo '</div>'; echo '</div>'; echo '<div class="col-xs-4">'; /* echo '<input type="text" class="form-control" size="5" name="cupo" id="cupo" disabled/>'; */ echo '</div>'; echo '</div>'; echo '</div>'; echo '<div class="col-sm-12"> </div>'; echo '<div class="col-sm-12"> </div>'; echo '<div class="col-sm-12"> </div>'; /* echo "Toneladas de "; */ ?> <link rel="stylesheet" href="assets/css/font-icons/font-awesome/css/font-awesome.min.css"> <?php echo '<div class="modal-header"> <h4 class="modal-title">Autorización de Matrículas</h4> </div> <div class="col-sm-2"> </div> <div class="col-sm-3"> </div> <div class="modal-body"> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Tractora</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span> <input class="form-control" type="text" name="matricula" id="formGroup" placeholder="AAA1234"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Remolque</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span> <input class="form-control" type="text" name="matricular" id="formGroup" placeholder="AAA1234"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">N.I.F-N.I.E</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-credit-card"></span></span> <input class="form-control" type="text" name="dni" id="formGroup" placeholder="DNI o PASAPORTE"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Conductor</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="entypo-user"></span></span> <input class="form-control" type="text" name="xofer" id="formGroup" placeholder="Nombre y Apellido"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">P.M.A</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="entypo-download"></span></span> <select name="pma" id="formGroup" class="selectboxit"> <option>40.800</option> <option>41.000</option> <option>44.000</option> </select> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="modal-footer"> <input class="btn btn-success" id="enviar" type="submit" value="Enviar" /> </div> </form> <div id="respuesta"></div>';
Pues me da error de que le falta los campos del formulario
Respuestas
Yo probaría a hacer primero lo siguiente:
1) Al principio del archivo PHP que procesa el formulario, pon var_dump($_POST)
para ver si te han enviado algo mediante POST. Si hay información, el problema está en PHP y no en JavaScript.
2) Si no llega la información a PHP, utiliza el "Inspector Web" del navegador para ver si en la petición se está enviando la información.
@javiereguiluz
De aquí no salgo y con el inspector web no consigo ver nada:
Notice: Undefined index: contrato in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 3 in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 2 in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 1 in /var/www/html/lab/neon/mira.php on line 34 Num distribucion: Num Dist de Venta: Num Linea de Operacion: Num de Operacion: Notice: Undefined index: matricula in /var/www/html/lab/neon/mira.php on line 48 Notice: Undefined index: matricular in /var/www/html/lab/neon/mira.php on line 50 Notice: Undefined index: dni in /var/www/html/lab/neon/mira.php on line 52 Notice: Undefined index: xofer in /var/www/html/lab/neon/mira.php on line 54 Notice: Undefined index: pma in /var/www/html/lab/neon/mira.php on line 56
Y el PHP q procesa essta así:
<?php if (!isset($_SESSION)) { session_start(); } IF (!ISSET($_SESSION['user'])) HEADER("Location:extra-login.html"); var_dump($_POST); $user = $_SESSION['numcliente']; $lineaopera = $_SESSION['Num_linea_operacion']; $cupos = $_SESSION['Cdad_disponible'] ; $ncontrato = $_SESSION['Num_contrato'] ; $noclienvendedor = $_SESSION['NombreClienteVendedor'] ; $nuclienvendedor = $_SESSION['Num_cliente_vendedor'] ; $product = $_SESSION['NombreProducto'] ; $numproduct = $_SESSION['Num_producto'] ; $distribucion = $_SESSION['Num_distribucion'] ; $distventa = $_SESSION['Num_dist_venta'] ; $nopera = $_SESSION['Num_operacion'] ; echo "a partir de aqui debe escribir"; list($a,$b,$c,$d) = explode("-",$_POST['contrato']); echo "Num distribucion: " ; echo $a; echo '<br>'; echo "Num Dist de Venta: "; echo $b; echo '<br>'; echo "Num Linea de Operacion: "; echo $c; echo '<br>'; echo "Num de Operacion: "; echo $d; echo '<br>'; echo $_POST['matricula']; echo '<br>'; echo $_POST['matricular']; echo '<br>'; echo $_POST['dni']; echo '<br>'; echo $_POST['xofer']; echo '<br>'; echo $_POST['pma']; echo '<br>'; ?>
@javierecompring
Te he dicho que lo pongas "al principio del archivo PHP", pero en realidad, debes ponerlo justo al empezar a procesar los valores $_POST
. Pon lo siguiente a ver si ves algo en la ventana del navegador:
var_dump($_POST); exit;
@javiereguiluz
<?php if (!isset($_SESSION)) { session_start(); } IF (!ISSET($_SESSION['user'])) HEADER("Location:extra-login.html"); var_dump($_POST); $user = $_SESSION['numcliente']; $lineaopera = $_SESSION['Num_linea_operacion']; $cupos = $_SESSION['Cdad_disponible'] ; $ncontrato = $_SESSION['Num_contrato'] ; $noclienvendedor = $_SESSION['NombreClienteVendedor'] ; $nuclienvendedor = $_SESSION['Num_cliente_vendedor'] ; $product = $_SESSION['NombreProducto'] ; $numproduct = $_SESSION['Num_producto'] ; $distribucion = $_SESSION['Num_distribucion'] ; $distventa = $_SESSION['Num_dist_venta'] ; $nopera = $_SESSION['Num_operacion'] ; echo "a partir de aqui debe escribir"; var_dump($_POST); exit; list($a,$b,$c,$d) = explode("-",$_POST['contrato']); echo "Num distribucion: " ; echo $a; echo '<br>'; echo "Num Dist de Venta: "; echo $b; echo '<br>'; echo "Num Linea de Operacion: "; echo $c; echo '<br>'; echo "Num de Operacion: "; echo $d; echo '<br>'; echo $_POST['matricula']; echo '<br>'; echo $_POST['matricular']; echo '<br>'; echo $_POST['dni']; echo '<br>'; echo $_POST['xofer']; echo '<br>'; echo $_POST['pma']; echo '<br>'; ?>
La salida:
a partir de aqui debe escribir Notice: Undefined index: contrato in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 3 in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 2 in /var/www/html/lab/neon/mira.php on line 34 Notice: Undefined offset: 1 in /var/www/html/lab/neon/mira.php on line 34 Num distribucion: Num Dist de Venta: Num Linea de Operacion: Num de Operacion: Notice: Undefined index: matricula in /var/www/html/lab/neon/mira.php on line 48 Notice: Undefined index: matricular in /var/www/html/lab/neon/mira.php on line 50 Notice: Undefined index: dni in /var/www/html/lab/neon/mira.php on line 52 Notice: Undefined index: xofer in /var/www/html/lab/neon/mira.php on line 54 Notice: Undefined index: pma in /var/www/html/lab/neon/mira.php on line 56
pero siguen dando los mismos errores.
@javierecompring
Parece que la variable $_POST
está totalmente vacía, por lo que no se está enviando nada mediante POST desde el navegador.
Estaba mirando tu código original y al parecer, tu formulario es así:
<form name="formcontract" ...
Y tu JavaScript hace esto:
data: $("#formcontract").serialize(),
Deberías cambiar tu formulario por esto otro (cambia name
por id
):
<form id="formcontract" ...
@javiereguiluz
seguimos igual:
echo '<div class="modal-header">'; echo '<button type="button" class="close" data-dismiss="modal">×</button>'; echo '<h4 class="modal-title">Seleccione Contrato</h4>'; echo '</div>'; { echo '<div class="modal-body">'; echo '<form id="formcontract" method="post" class="form-horizontal">'; echo '<div class="form-group">'; echo '<label class="col-sm-3 control-label" for="formGroup" id="contract">Contratos</label>'; echo '<div class="input-group col-sm-7">'; echo '<span class="input-group-addon"><span class="glyphicon glyphicon-list-alt"></span></span>'; echo '<select name="contrato" class="selectboxit" onchange="mostrarValor(this);">'; echo '<option selected="disabled">Selecciona un Contrato</option>'; foreach($incidencias as $cust) { echo '<option value="'.$cust->Num_distribucion.'-'.$cust->Num_dist_venta.'-'.$cust->Num_linea_operacion.'-'.$cust->Num_operacion.'">'.$cust->Num_contrato.' '.$cust->Cdad_disponible.'Kg de '.$cust->NombreProducto.'</option>'; } echo '</select>'; echo '</div>'; echo '</div>'; echo '<div class="col-xs-4">'; /* echo '<input type="text" class="form-control" size="5" name="cupo" id="cupo" disabled/>'; */ echo '</div>'; echo '</div>'; echo '</div>'; echo '<div class="col-sm-12"> </div>'; echo '<div class="col-sm-12"> </div>'; echo '<div class="col-sm-12"> </div>'; /* echo "Toneladas de "; */ ?> <link rel="stylesheet" href="assets/css/font-icons/font-awesome/css/font-awesome.min.css"> <?php echo '<div class="modal-header"> <h4 class="modal-title">Autorización de Matrículas</h4> </div> <div class="col-sm-2"> </div> <div class="col-sm-3"> </div> <div class="modal-body"> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Tractora</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span> <input class="form-control" type="text" name="matricula" id="formGroup" placeholder="AAA1234"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Remolque</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-keyboard-o"></span></span> <input class="form-control" type="text" name="matricular" id="formGroup" placeholder="AAA1234"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">N.I.F-N.I.E</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="fa fa-credit-card"></span></span> <input class="form-control" type="text" name="dni" id="formGroup" placeholder="DNI o PASAPORTE"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">Conductor</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="entypo-user"></span></span> <input class="form-control" type="text" name="xofer" id="formGroup" placeholder="Nombre y Apellido"> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="form-group"> <label class="col-sm-3 control-label" for="formGroup">P.M.A</label> <div class="input-group col-sm-5"> <span class="input-group-addon"><span class="entypo-download"></span></span> <select name="pma" id="formGroup" class="selectboxit"> <option>40.800</option> <option>41.000</option> <option>44.000</option> </select> </div> </div> <div class="col-sm-12"> </div> <div class="col-sm-12"> </div> <div class="modal-footer"> <input class="btn btn-success" id="enviar" type="submit" value="Enviar" /> </div> </form> <div id="respuesta"></div>'; } $nopera = $cust->Num_operacion; $distventa = $cust->Num_dist_venta; $distribucion = $cust->Num_distribucion; $numproduct = $cust->Num_producto; $product = $cust->NombreProducto; $nuclienvendedor = $cust->Num_cliente_vendedor; $noclienvendedor = $cust->NombreClienteVendedor; $ncontrato = $cust->Num_contrato; $cupos = $cust->Cdad_disponible; $lineaopera = $cust->Num_linea_operacion; /* echo $nopera; echo '<br>'; echo $lineaopera; echo '<br>'; echo $distventa; echo '<br>'; echo $distribucion; echo "|||||"; echo '<br>'; echo $ncontrato; echo '<br>'; */ $_SESSION['Num_linea_operacion'] = $lineaopera; $_SESSION['Cdad_disponible'] = $cupos; $_SESSION['Num_contrato'] = $ncontrato; $_SESSION['NombreClienteVendedor'] = $noclienvendedor; $_SESSION['Num_cliente_vendedor'] = $nuclienvendedor; $_SESSION['NombreProducto'] = $product; $_SESSION['Num_producto'] = $numproduct; $_SESSION['Num_distribucion'] = $distribucion; $_SESSION['Num_dist_venta'] = $distventa; $_SESSION['Num_operacion'] = $nopera; ?> <script> $(function(){ $("#enviar").click(function(){ var url = "mira.php"; // El script a dónde se realizará la petición. $.ajax({ type: "POST", url: url, data: $("#formcontract").serialize(), // Adjuntar los campos del formulario enviado. success: function(data) { $("#respuesta").html(data); // Mostrar la respuestas del script PHP. } }); return false; // Evitar ejecutar el submit del formulario. }); }); </script>
respuesta: a partir de aqui debe escribir Notice: Undefined index: contrato in /var/www/html/lab/neon/mira.php on line 34
Notice: Undefined offset: 3 in /var/www/html/lab/neon/mira.php on line 34
Notice: Undefined offset: 2 in /var/www/html/lab/neon/mira.php on line 34
Notice: Undefined offset: 1 in /var/www/html/lab/neon/mira.php on line 34 Num distribucion: Num Dist de Venta: Num Linea de Operacion: Num de Operacion:
Notice: Undefined index: matricula in /var/www/html/lab/neon/mira.php on line 48
Notice: Undefined index: matricular in /var/www/html/lab/neon/mira.php on line 50
Notice: Undefined index: dni in /var/www/html/lab/neon/mira.php on line 52
Notice: Undefined index: xofer in /var/www/html/lab/neon/mira.php on line 54
Notice: Undefined index: pma in /var/www/html/lab/neon/mira.php on line 56
@javierecompring
<script> $("#formcontract").submit(function(e) { var url = "autorizar.php"; // the script where you handle the form input. $.ajax({ type: "POST", url: url, data: $("#formcontract").serialize(), // serializes the form's elements. success: function(data) { alert(data); // show response from the php script. } }); e.preventDefault(); // avoid to execute the actual submit of the form. }); </script> COn esto ya me recoje los datos y me muestra la respuesta en un alert
@javierecompring