Stack Overflow en español Asked by Ruth on February 15, 2021
Tengo un pequeño formulario para agregar un cliente, lo recibo con JQuery y no tengo idea de como seguir…
$('#agregar').submit(function(e){
const dataAgregar = {
nombre: $('#nombre').val(),
apellido: $('#apellido').val(),
dni: $('#dni').val()
}
console.log(dataAgregar);
$.post('/autoparts_system/modulos/Clientes/cliente-add.php', {dataAgregar},
function(response){
console.log(response);
fetchList();
// Se resetea el formulario luego de haber enviado los datos
$('#agregar').trigger('reset');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form role="form" method="post" id="agregar">
<h3>Ingrese los datos del cliente</h3>
<p>
<div class="form-group">
<label>Escriba su nombre: </label>
<input type="text" id="nombre" style="text-transform:uppercase;">
</label>
</div>
</p>
<p>
<div class="form-group">
<label>Escriba su apellido </label>
<input type="text" id="apellido" style="text-transform:uppercase;">
</label>
</div>
</p>
<p>
<div class="form-group">
<label>Escriba su DNI:</label>
<input type="text" id="dni" >
</label>
</div>
</p>
<button type="submit" class="btn btn-danger">Agregar</button>
</form>
<?php
require '../../php/conexion.php';
$nombre = strtoupper($_POST['nombre']);
$apellido = strtoupper($_POST['apellido']);
$dni = $_POST['dni'];
echo $nombre, $apellido;
?>
Al mostrar los datos en la Línea console.log(dataAgregar) después de definir la constante, veo en consola todos los datos introducidos al formulario
pero al correr el código en mi localhost el error que me lanza el Php es que no recibe los datos que envía… el console.log(response)
que se encuentra dentro del método $.post
me devuelve índice indefinido para todas las variables del Php!
te explico a través de un ejemplo como se debe ejecutar
$('#agregar').submit(function(e){
//usa e.preventDefault() evita la accion del submit
e.preventDefault()
const dataAgregar = {
nombre: $('#nombre').val(),
apellido: $('#apellido').val(),
dni: $('#dni').val()
}
console.log(dataAgregar);
$.ajax({
url: '/autoparts_system/modulos/Clientes/cliente-add.php',
type: 'post',
data: dataAgregar,
beforeSend: function (){
//opcional
//antes de enviar puedes colocar un gif cargando o un mensaje que diga espere...
}
}).done(function(data){
console.log(response);
fetchList();
// Se resetea el formulario luego de haber enviado los datos
$('#agregar').trigger('reset');
}).fail(function(jqXHR, ajaxOptions, thrownError){
//en caso de que haya un error muestras un mensaje con el error
console.log(thrownError);
})
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form role="form" method="post" id="agregar">
<h3>Ingrese los datos del cliente</h3>
<p>
<div class="form-group">
<label>Escriba su nombre: </label>
<input type="text" id="nombre" style="text-transform:uppercase;">
</label>
</div>
</p>
<p>
<div class="form-group">
<label>Escriba su apellido </label>
<input type="text" id="apellido" style="text-transform:uppercase;">
</label>
</div>
</p>
<p>
<div class="form-group">
<label>Escriba su DNI:</label>
<input type="text" id="dni" >
</label>
</div>
</p>
<button type="submit" class="btn btn-danger">Agregar</button>
</form>
Te dejo con comentarios la explicación del código.
Correct answer by Miguel Vargas on February 15, 2021
Si bien la respuesta anterior es correcta, considera mandar todo tu formulario en un objeto FormData
Esto mandara todo lo que tengas en tu formulario id="agregar"
cabe mencionar que todos tus inputs
le deberas agregar el atributo name
ya que atraves de ese atributo name
podras recibirlo con PHP ejemplo:
<input type="text" id="nombre" name="nombre" style="text-transform:uppercase;">
Entonces tu peticion quedaria de la siguiente manera:
$("#agregar").submit(function (e) {
//usa e.preventDefault() evita la accion del submit
e.preventDefault();
$.ajax({
url: "URL A DONDE QUIERES MANDAR TU PETICION",
method: "POST",
data: new FormData(this), //THIS HACE REFERENCIA AL FORMULARIO #agregar
cache: "false",
beforeSend: function () {
//PUEDES HACER ALGO ANTES DE QUE SE ENVIE TU PETICION
},
success: function (data) {
// EN DATA VIENE LA INFO QUE TE RESPONDE EL SERVIDOR
},
});
});
Te dejo unos enlaces para que puedas comprender lo planteado:
Answered by NikolaTesla on February 15, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP