Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Enviar datos recogidos de json

Estas en el tema de Enviar datos recogidos de json en el foro de Jquery en Foros del Web. Hola, por favor tengo este código y lo que quiero es mandar un formulario y hacer un insert de los datos recogidos en el append ...
  #1 (permalink)  
Antiguo 13/03/2014, 02:43
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Enviar datos recogidos de json

Hola, por favor tengo este código y lo que quiero es mandar un formulario y hacer un insert de los datos recogidos en el append.


Código Javascript:
Ver original
  1. $.ajax({
  2.              type: "GET",
  3.              url: "edit-total.php?tabla=1&id_aviso=" +id_aviso,
  4.              beforeSend:function(objeto){
  5.                 $('#carga').css({display:'block'});
  6.             },
  7.             complete:function(){
  8.                 $('#carga').css('display','none');
  9.                 },
  10.             })
  11.            .done(function(json) {
  12.             json = $.parseJSON(json)
  13.             for(var i=0;i<json.length;i++)
  14.             {
  15.                 $('.enlace8').append(
  16. "<table width='100%' class='bl'><tr><td width='10%'>Dto</td><td  width='12%' class='dto' data-campo='descuento'><span>"+json[i].descuento+"</span></td><td  width='3%'></td><td>Dto</td><td></td><td>Dto</td><td></td></tr><tr><td width='10%'>Base</td><td  width='12%' class='dto' data-campo='pvp_total'><span>"+json[i].pvp_total+"</span></td><td  width='3%'></td><td>Base</td><td></td><td>Base</td><td></td></tr><tr><td  width='16%' style='padding:5px;border:solid #ddd;border-width:0 0 1px;' >Iva 21%</td><td width='10%' class='dto' data-campo='iva'><span>"+json[i].iva+"</span></td><td  width='3%'></td><td style='padding:5px;border:solid #ddd;border-width:0 0 1px;'>Iva 21%</td><td></td><td style='padding:5px;border:solid #ddd;border-width:0 0 1px;'>Iva 21%</td><td></td></tr><tr><td width='10%'>Total</td><td  width='12%' class='dto1' data-campo='total'><span>"+json[i].total+"</span></td><td  width='3%'></td><td>Total</td><td></td><td>Total</td><td></td></tr></table>");
  17.             }      
  18.                    
  19.      });
  20.            
  21.     });

Gracias

Última edición por satjaen; 13/03/2014 a las 02:55
  #2 (permalink)  
Antiguo 13/03/2014, 10:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Enviar datos recogidos de json

Si te fijas, estás trabajando el bucle como si tuvieras varios objetos JSON, cuando supongo que debe ser uno con varios datos. Como un objeto JSON es iterable, te sugiero hacerlo con el método each, aunque claro, hacerlo con cualquier estructura repetitiva es válido.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 13/03/2014, 16:23
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Enviar datos recogidos de json

Cita:
Iniciado por Alexis88 Ver Mensaje
Si te fijas, estás trabajando el bucle como si tuvieras varios objetos JSON, cuando supongo que debe ser uno con varios datos. Como un objeto JSON es iterable, te sugiero hacerlo con el método each, aunque claro, hacerlo con cualquier estructura repetitiva es válido.

Saludos
Gracias Alexis, he pensado en hacerlo así pero no me sale:

Código Javascript:
Ver original
  1. $('#form_account').append(
  2. "<table width='100%'><tr><td width='10%'>Dto</td><td  width='12%' class='dto' data-campo='descuento'><span>"+json[i].descuento+"</span></td></tr><tr><td width='10%'>Base</td><td  width='12%' class='dto' data-campo='pvp_total'><span>"+json[i].pvp_total+"</span></td></tr><tr><td  width='16%' style='padding:5px;border:solid #ddd;border-width:0 0 1px;' >Iva 21%</td><td width='10%' class='dto' data-campo='iva'><span>"+json[i].iva+"</span></td></tr><tr><td width='10%'>Total</td><td  width='12%' class='dto1' data-campo='total'><span>"+json[i].total+"</span></td></tr></table>");
  3.             }      
  4.                    
  5.      });
  6.      
  7.                     var dataString = $('#form_account').serialize();
  8.  
  9.                     $.ajax({
  10.                     type: "POST",
  11.                     url: "fact_mc.php",
  12.                     data: dataString,
  13.                     beforeSend:function(objeto){
  14.                     $('#carga').css({display:'block'});
  15.                     },
  16.                     complete:function(){
  17.                     $('#carga').css('display','none');
  18.                     },
  19.                     success: function(data) {
  20.  
  21.             }
  22.         });
  #4 (permalink)  
Antiguo 13/03/2014, 21:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Enviar datos recogidos de json

Una pregunta, ¿por qué usas índices?, ¿tienes más de un objeto JSON?, porque si solamente tienes uno, no serían necesarios y por el contrario, no obtendrías el resultado que esperas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 14/03/2014, 01:44
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Enviar datos recogidos de json

Ok, entonces como lo hago ?
  #6 (permalink)  
Antiguo 14/03/2014, 08:04
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Enviar datos recogidos de json

Si es un y sólo un objeto JSON, accede a sus atributos sin usar índices.

Código Javascript:
Ver original
  1. var json = {nombre: "Juan", edad: 20};
  2.  
  3. document.body.innerHTML += "Nombre: " + json.nombre + "<br />";
  4. document.body.innerHTML += "Edad: " + json.edad;

Resultado:

Código HTML:
Ver original
  1. Nombre: Juan
  2. Edad: 20

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 14/03/2014, 11:20
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Enviar datos recogidos de json

Cita:
Iniciado por Alexis88 Ver Mensaje
Si es un y sólo un objeto JSON, accede a sus atributos sin usar índices.

Código Javascript:
Ver original
  1. var json = {nombre: "Juan", edad: 20};
  2.  
  3. document.body.innerHTML += "Nombre: " + json.nombre + "<br />";
  4. document.body.innerHTML += "Edad: " + json.edad;

Resultado:

Código HTML:
Ver original
  1. Nombre: Juan
  2. Edad: 20

Saludos


Gracias Alexis, quieres decir así:

Código Javascript:
Ver original
  1. <script>
  2.  
  3.   $.ajax({
  4.              type: "GET",
  5.              url: "edit-total.php?tabla=1&id_aviso=" +id_aviso,
  6.                          dataType: "json",
  7.              beforeSend:function(objeto){
  8.                         $('#carga').css({display:'block'});
  9.             },
  10.                         complete:function(){
  11.                 $('#carga').css('display','none');
  12.                 },
  13.             })
  14.          success: function(data){
  15.                  var html_user ='' ;
  16.                  if(data.length > 0){
  17.                  $.each(data, function(i,item){
  18.  
  19.  html_user += '<td >'+item.descuento+'</td>';
  20.  html_user += '<td >'+item.pvp_total+'</td>';
  21.  html_user += '<td >'+item.iva+'</td>';
  22.  html_user += '<td >'+item.total+'</td>';
  23.  
  24.  
  25.  
  26. });
  27.  
  28.  
  29.  }
  30.  
  31.          var dataString =  
  32.  
  33.                     $.ajax({
  34.                     type: "POST",
  35.                     url: "insertar.php",  -------> Aqui hago el insert en la base de datos
  36.                     data: dataString,
  37.                     beforeSend:function(objeto){
  38.                     $('#carga').css({display:'block'});
  39.                     },
  40.                     complete:function(){
  41.                     $('#carga').css('display','none');
  42.                     },
  43.                     success: function(data) {
  44.  
  45.             }
  46.         });
  47.  
  48.    
  49.  
  50.   </script>



Pero como se haría el dataString ?

Podría ser ?:

Código Javascript:
Ver original
  1. var dataString = 'descuento='+item.descuento+'&pvp_total='+item.pvp_total+'&iva='+item.iva+'&total='+item.total;

Última edición por satjaen; 14/03/2014 a las 11:32
  #8 (permalink)  
Antiguo 14/03/2014, 11:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Enviar datos recogidos de json

Aparentemente, debería funcionar de esa forma. Inténtalo y nos dices cómo te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 14/03/2014, 12:50
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Enviar datos recogidos de json

Cita:
Iniciado por Alexis88 Ver Mensaje
Aparentemente, debería funcionar de esa forma. Inténtalo y nos dices cómo te fue.

Saludos

Alexis me da error que no están definidos los item:


Código Javascript:
Ver original
  1. var id_aviso = $('#id_aviso') .val();
  2.  
  3.   $.ajax({
  4.              type: "GET",
  5.              url: "edit-total.php?tabla=1&id_aviso=" +id_aviso,
  6.              dataType: "json",
  7.       beforeSend:function(objeto){
  8.              $('#carga').css({display:'block'});
  9.              },
  10.              complete:function(){
  11.              $('#carga').css('display','none');
  12.              },
  13.            success: function(data){
  14.       var html_user ='' ;
  15.     if(data.length > 0){
  16.      $.each(data, function(i,item){
  17.  
  18.              html_user += '<td >'+item.descuento+'</td>';
  19.              html_user += '<td >'+item.pvp_total+'</td>';
  20.              html_user += '<td >'+item.iva+'</td>';
  21.              html_user += '<td >'+item.total+'</td>';
  22.  
  23.  
  24.  
  25.               });
  26.              
  27.             }
  28.  
  29.         }
  30.                
  31.  });
  32.  
  33.  
  34.     var dataString = 'descuento='+item.descuento+'&pvp_total='+item.pvp_total+'&iva='+item.iva+'&total='+item.total;
  35.          
  36.  
  37.                     $.ajax({
  38.                     type: "POST",
  39.                     url: "insertar.php",
  40.                     data: dataString,
  41.                     beforeSend:function(objeto){
  42.                     $('#carga').css({display:'block'});
  43.                     },
  44.                     complete:function(){
  45.                     $('#carga').css('display','none');
  46.                     },
  47.                     success: function(data) {
  48.  
  49.             }
  50.         });
  #10 (permalink)  
Antiguo 14/03/2014, 13:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Enviar datos recogidos de json

1. Nuevamente estás iterando al objeto JSON, no sé por qué lo haces si al fin de cuentas accedes a tus atributos directamente.

2. No puedes manipular los datos del objeto fuera de la función en donde se genera.

Supongo que intentas enviar la segunda petición asíncrona (Ajax) luego de haber ejecutado la primera. En ese caso, en el método success de la primera, realiza la segunda petición, así el objeto estará al alcance y será accesible.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: json
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 19:58.