Foros del Web » Programando para Internet » Jquery »

detalle en forech y append div

Estas en el tema de detalle en forech y append div en el foro de Jquery en Foros del Web. que tal forer@s!! Veran estoy implementando un forech en jquery, por cada elemento quiero que se cree un div con un id unico y posteriormente ...
  #1 (permalink)  
Antiguo 27/06/2014, 12:50
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
detalle en forech y append div

que tal forer@s!!


Veran estoy implementando un forech en jquery, por cada elemento quiero que se cree un div con un id unico y posteriormente asignarle datos a cada div creado, este es mi codigo:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2. $("#go").click(function(){
  3. var items = $('#items').val();
  4. var array_items = items.split(",");
  5. array_items.forEach(function(item) {
  6.     if(item!=null || item!='')
  7.     item = item.trim();
  8.     //crear el div por cada item
  9.     divResult = 'container_'+item; //el item es un valor unico
  10.     $('#container').append('<div id="'+divResult+'">'+item+'</div>');
  11.     //send ang get the data
  12.     $.getJSON('get_data.php', {"item":item}, function(data) {
  13.         alert('d '+JSON.stringify(data)); //el alert me muestra la data bien en cada vuelta
  14.         $('#'+divResult).text(JSON.stringify(data));
  15.         });
  16. });
  17. });
  18. });
Código HTML:
<!--codigo relevante html-->
<a id="go" href="#">Ir</a>
<textarea id="items" name="items" cols="30" rows="5"></textarea>

<div id=container></div> 
El problema es que solo me manda la data del ultimo item, por ejemplo, si yo en el text area escribo: 1, 2, 3 en el container me muestra:

Código:
1
2
[{label:value}, {...}] //imaginemos el formato json XD
por lo que veo ahi es que si crea los div, por que estoy visualizando los valores de los items que recibe, y solo en el ultimo item devuelve la data en su div correspondiente.

Algo estoy malinterpretando con mi función o ustedes que opinan?

Última edición por catpaw; 27/06/2014 a las 12:55
  #2 (permalink)  
Antiguo 27/06/2014, 14:07
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: detalle en forech y append div

Creo que ya voy viendo que pasa, quite el foreach y puse un simple for, aunque trabaja igual me imagino, tambien agregue unos alert para ir viendo:

Código Javascript:
Ver original
  1. for(i=0;i<array_items.length;i++){
  2.     item = array_items[i];
  3.     if(item!=null || item!='')
  4.     item = item.trim();
  5.     divResult = 'container_'+item;
  6.     $('#container').append('<div id="'+divResult+'"></div>');
  7.     alert('{"item":'+item+'}');
  8.     $.getJSON('get_data.php', {"item":item}, function(data) {
  9.        
  10.     })
  11.     .success(function(data) {
  12.         $('#wait').remove();
  13.         alert(item+' '+JSON.stringify(data));
  14.     })
  15.     .error(function(jqXHR, textStatus, errorThrown) {
  16.         $('#wait').remove();
  17.         $('#container').html(jqXHR.responseText);
  18.     });
  19. }

bueno sigo con mi ejemplo de poner en el textarea 1, 2, 3 y pasa lo siguiente con los alerts:

alert1 = alert('{"item":'+item+'}'); //antes de enviar la data
alert2 = alert(item+' '+JSON.stringify(data)); //en el success del getjson al recibir la data

alert1 = {"item":1}
alert2 = 2 {"item":1}
al mismo tiempo del alert2 se vuelve a lazar el alert1
alert1 = {"item":2}
alert2 = 3 {"item":2}
alert1 = {"item":3}
alert2 = 3 {"item":3}

si observan el proceso ocurre tan rapido y de forma no secuencial que cuando pide el 1 ya se esta corriendo el 2 y se desfasa todo, y si le quito los alerts incluso pasa aun mas rapido que solo se muestra el ultimo.

entonces de alguna forma que desconozco, y espero su apoyo como siempre, es ver como hacer esperar por la respuesta y asignar la respuesta al div y luego hacer el siguiente, en pocas palabras, que actue de forma secuencial.

Alguien tiene alguna sugerencia? Gracias de antemano.
  #3 (permalink)  
Antiguo 27/06/2014, 14:31
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: detalle en forech y append div

Hola, buenas noticias

A no ser que tengan alguna objeción ya resolvi el asunto, efectivamente era cosa del procesamiento secuencial, por lo cual tuve que prescindir del $getjson y poner un $ajax normal para poder dejar la opcion async en false.

Código Javascript:
Ver original
  1. $.ajax({
  2.     dataType: "json",
  3.     url: 'get_data.php',
  4.     data: {"item":item},
  5.     async: false,
  6.     success: function(data) {
  7.         $('#wait').remove();
  8.         $('#'+divResult).text(JSON.stringify(data));
  9.     },
  10.     error: function(jqXHR, textStatus, errorThrown) {
  11.         $('#wait').remove();
  12.         $('#container').html(jqXHR.responseText);
  13.     }
  14. });

Como ven?

Etiquetas: append, detalle
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 18:57.