Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/06/2016, 14:03
BaSingSe
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 12 años, 6 meses
Puntos: 1
AJAX envio POST sin refresh

Estoy practicando ajax con jquery haciendo un formulario el cual pueda insertar, editar, mostrar y eliminar sin que la pagina recargue, hasta ahroa e conseguido 3 de esos..Insertar es quien me esta dando problemas porque la pagina se me recarga y cuando no se recarga solo me el ultimo campo del formulario.

Código Javascript:
Ver original
  1. var x = $(document).ready(Ini);
  2.  
  3. function Ini(){
  4.     $("#load").load("listados.php");
  5. }
  6.  
  7. function Llamar(n){
  8.     $.get("modificar.php",{id:n},function(data){
  9.         $("#datos").html(data);
  10.     });
  11. }
  12.  
  13. function Operaciones(n){
  14.     var btn = $("#op_"+n).val(),
  15.         idi = $("#id").val(),
  16.         nomb = $("#nom").val(),
  17.         canti = $("#cant").val();
  18.     console.log(btn);
  19.     $("#datos").html('<img src="loading.gif">');
  20.     $("#load").fadeTo("slow",0.1);
  21.     $.get("operaciones.php",{op:btn,id:idi,nom:nomb,cant:canti},Mostrar);
  22. }
  23.  
  24.  
  25. function Mostrar(data){
  26.     $("#datos").html('');
  27.     $("#load").fadeTo("slow",1);
  28.     $("#load").load("listados.php");
  29. }

Este es el codigo que uso para insertar y el formulario
Código HTML:
Ver original
  1.     <input type="text" name="nom" placeholder="Nombre">
  2.     <input type="text" name="cant" placeholder="Cantidad">
  3.     <input type="button" value="Agregar" onclick="Insertar()">
  4. </form>

Código Javascript:
Ver original
  1. function Insertar(){
  2.     var that = $("form"),
  3.         data = {};
  4.  
  5.     that.find('[name]').each(function(index,value){
  6.         var that = $(this),
  7.             name = that.attr('name'),
  8.             value = that.val();
  9.  
  10.         data[name] = value
  11.     });
  12.  
  13.     console.log($("form").serialize());
  14.    
  15.    $.ajax({
  16.         url: 'class/insertar.php',
  17.         dataType: 'text',
  18.         type: 'post',
  19.         contentType: 'application/x-www-form-urlencoded',
  20.         data: data,
  21.         success: function( data, textStatus, jQxhr ){
  22.             $("#load").fadeTo("slow",1);
  23.             $("#load").load("listados.php");
  24.         },
  25.         error: function( jqXhr, textStatus, errorThrown ){
  26.             console.log( errorThrown );
  27.         }
  28.     });
  29. }

En la consola me muestra "nom=XXX&cant=2" que si esta tomando los valores del formulario pero parece que solo esta enviando el ultimo valor poruqe solo me esta insertando lo que tiene "CANT".. alguna manito para resolver esto?

Codigo PHP para insertar
Código PHP:
Ver original
  1. include_once('productos.php');
  2. $p = new Producto($_POST['nom'],$_POST['cant']);
  3. $p->Insertar();