Hola amigos Estoy creando una aplicación web que envía datos que se almacenan en una fórmula a la que hay que llamar para multiplicar, pero al llamar a las fórmulas y listarlas solo agrega un campo. En la consola usando console.log (datos); se muestran todos los datos pero no se pueden listar y hacer un console.log (detalles); que es las variables solo recibe una. No sé cuál es el problema, agradecería su ayuda.

var detalles = []; 
   function agregarDetalleB(id_Dproducto,materiales,estado){
            $.ajax({
          url:"../ajax/Dproducto.php?op=buscar_DproductoB",
           method:"POST",
          data:{id_Dproducto:id_Dproducto,materiales:materiales,estado:estado},
          cache: false,
          dataType:"json",
          success:function(data){
                     
                     if(data.id_Dproducto){

            console.log(data);
            for (var i = 0; i < data.length; i++) {   
            var obj = {
              Nbatida : 1,
              codDD  : id_Dproducto, 
              codDpro   : data[i].id_Mprima,
              materiales : data[i].materiales,
              unidadm  : data[i].unidadm,
              precio   : data[i].precio,
              cantidad : data[i].cantidad,
              moneda   : data[i].moneda,
              importe  : 0,
              estado   : data[i].estado
              };           
            detalles.push(obj);
             }
            console.log(detalles);
             
            listarDetallesB();
            

            $('#modalDproducto').modal("hide");
                       }
                        else {
                            bootbox.alert(data.error);
                        }       
          }  

        });  
      }
0
wilbert palacios 22 feb. 2021 a las 23:07

1 respuesta

La mejor respuesta

En esta línea:

for (var i = 0; i < data.length; i++) { }
                                        ^

Está cerrando el ciclo en la misma línea, por lo que no deja código para recorrer. Debe cerrar el ciclo después de haber extraído los datos:

        for (var i = 0; i < data.length; i++) {   // No } here  
        var obj = {
          Nbatida : 1,
          codDD  : id_Dproducto, 
          codDpro   : data[i].id_Mprima,
          materiales : data[i].materiales,
          unidadm  : data[i].unidadm,
          precio   : data[i].precio,
          cantidad : data[i].cantidad,
          moneda   : data[i].moneda,
          importe  : 0,
          estado   : data[i].estado
          };           
        detalles.push(obj);

        } // but here.
0
Tangentially Perpendicular 22 feb. 2021 a las 20:47