Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Click Añade siempre el mism producto

Estas en el tema de Click Añade siempre el mism producto en el foro de Javascript en Foros del Web. Hola amigos! Estoy haciendo un carrito que añada productos usando jquery ajax. Cuando hago click en el botón (de un formulario) añade el producto, pero ...
  #1 (permalink)  
Antiguo 30/01/2014, 09:30
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 8 meses
Puntos: 3
Click Añade siempre el mism producto

Hola amigos!

Estoy haciendo un carrito que añada productos usando jquery ajax. Cuando hago click en el botón (de un formulario) añade el producto, pero siempre el mismo, ¿por qué?
Y mirando con el firebug veo que siempre pasa los mismos parámetros..
Este es el código jquery
Código Javascript:
Ver original
  1. <script>
  2. $(document).ready(function(){
  3.          
  4.      $(".add").on("click",function(){
  5.      
  6.           var idpieza = $(".idpie").val();
  7.           var precio = $(".precio").val();
  8.           var cantidad = $(".cantidad").val();
  9.          
  10.           $.ajax
  11.           ({
  12.                type: "POST",
  13.                url: "carrito_idproducto.php",
  14.                data: {idpie:idpieza, precio:precio, cantidad:cantidad},
  15.                success: function(data)
  16.                {
  17.                     $("#carrito").html(data);
  18.                    
  19.                }
  20.           });
  21.           return false; // Evita ejecutar el submit del formulario
  22.      });
  23.  
  24. });    
  25. </script>

Muchas gracias
PD: Siempre doy puntos a las buenas respuestas.
  #2 (permalink)  
Antiguo 30/01/2014, 09:41
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Click Añade siempre el mism producto

No entiendo... Ahí le estás pasando los tres valores recogidos de los campos de texto ¿no?
  #3 (permalink)  
Antiguo 30/01/2014, 10:00
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Click Añade siempre el mism producto

Buenas,

El problema está aqui:


Código Javascript:
Ver original
  1. var idpieza = $(".idpie").val();
  2. var precio = $(".precio").val();
  3. var cantidad = $(".cantidad").val();


Deduzco que siempre te mete el primer producto. Si pruebas eso en la consola, verás que $(".idpie") es un array de TODOS los producros. Siempre seleccionará el primero.

Yo, personalmente, suelo jugar con un atributo en el boton, por ejemplo
Código HTML:
<a class="btn btn-primary add" data-id="215">Guardar</a> 
Y a los campos, llamarlos así
Código HTML:
<input type="text" id="cantidad_215"> 
(Añadiendo _ID en cada id del campo!)

Y tu funcion js podría ser así:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.          
  3.      $(".add").on("click",function(){
  4.           var idpieza = $(this).attr('data-id');
  5.          
  6.           var precio = $("#precio_"+idpieza).val();
  7.           var cantidad = $("#cantidad_"+idpieza).val();
  8.          
  9.           $.ajax
  10.           ({
  11.                type: "POST",
  12.                url: "carrito_idproducto.php",
  13.                data: {idpie:idpieza, precio:precio, cantidad:cantidad},
  14.                success: function(data)
  15.                {
  16.                     $("#carrito").html(data);
  17.                    
  18.                }
  19.           });
  20.           return false; // Evita ejecutar el submit del formulario
  21.      });
  22.  
  23. });


Almenos, yo suelo usar algo así :)

Saludos!

EDIT: Por cierto, el "precio" no deberias pasarlo, solo cantidad e id... y luego pillar el precio de la bbdd... sino, algún avispadito te lo cambiará! (Y todo depende de que sea tu app, claro!)
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: ajax, jquery, onclick
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.