Foros del Web » Programando para Internet » Jquery »

Cargando capas

Estas en el tema de Cargando capas en el foro de Jquery en Foros del Web. Buenas amigos, queria consultarles, ya que no me esta saliendo bien lo que hice. Tengo una serie de capas que van cambiando a medida que ...
  #1 (permalink)  
Antiguo 12/06/2015, 06:41
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Cargando capas

Buenas amigos, queria consultarles, ya que no me esta saliendo bien lo que hice.
Tengo una serie de capas que van cambiando a medida que clickeo en una flecha de Atras y Proximo. cuando se realiza el cambio me pedian, por si hay retraso (se hace una llamda ajax) hacer un efecto de opacidad y/o poner un cartel de "Cargando"

El tema es que aun no he podido dar en la tecla, ya que segun noto, no se si logro hacer depender el delay o carga al tiempo real que dura la llamada:

Código:
        $("#capa").animate({
                opacity: 0.01,
                left: "+=1"
             },
             {
                duration: 2000,
                start: function() {
                    
                       
                
                   
                },
                complete: function() {
                  
                   
                   
                     if (direccion=='prev')
                           {
                               pagina_perfil--;
                           }
                           else{
                               pagina_perfil++;
                           }
                           if (pagina_perfil < 0 || pagina_perfil >= 500)
                           {
                               pagina_perfil=0;
                           }

                           if (pagina_perfil >= 0)
                           {
                               $.post("<?=base_url();?>ajax/cambiocapas/"+pagina_perfil, {}, function(data){

                                           $("#capa").animate({
                                                           opacity: 1,
                                                           left: "+=100"
                                                        });
                                           $("#capa").html(data);


                               });  
                           }
                   
                   

                },
                progress: function(animation, progress) {
                  
                }
             }
          );
Me podrian guiar o dar alguna idea?
Saludos!
  #2 (permalink)  
Antiguo 30/06/2015, 11:15
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Cargando capas

Ninguna idea, verdad?
  #3 (permalink)  
Antiguo 30/06/2015, 11:56
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: Cargando capas

A primera vista, la petición debe de realizarse al completarse el efecto de transición. También tienes la opción de usar el método $.ajax() que posee el método beforeSend el cual se ejecuta antes de realizar la petición. Los método .ajaxStart() y .ajaxStop() también te pueden ser útiles, así como el uso de promesas.

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
  #4 (permalink)  
Antiguo 30/06/2015, 12:00
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Cargando capas

Gracias Alexis! si, creo que en ese camino intente hacer algo pero no se donde la estoy errando:
Código Javascript:
Ver original
  1. if (pagina_perfil >= 0)
  2.                            {
  3.                              
  4.                                $('#result').load('<?=base_url();?>ajax/cambiocapas/"+online_profiles_page', function() {
  5.                                           alert('Load was performed.');
  6.                                           $("#capa").animate({
  7.                                                    opacity: 0.01,
  8.                                                    left: "+=100"
  9.                                           });
  10.                                          
  11.                                });  
  12.                                $('#result').ajaxStop(function() {
  13.                                           alert('Triggered ajaxStop handler.');
  14.                                           $("#capa").animate({
  15.                                                            opacity: 1,
  16.                                                            left: "+=100"
  17.                                                         });
  18.                                           $("#capa").html(data);
  19.                                    
  20.                                });
  21.  
  22.  }
  #5 (permalink)  
Antiguo 30/06/2015, 12: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: Cargando capas

Asocia el método .ajaxStop() al documento, para que detecte el cese de una petición asíncrona en el documento, tal y como se muestra en los ejemplos del enlace que te dejé. Podrías usar el método .ajaxStart() para ocultar al elemento y .ajaxStop() para volver a mostrarlo y procesar la respuesta de la petición.
__________________
«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
  #6 (permalink)  
Antiguo 30/06/2015, 12:07
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Cargando capas

Si, estaba probando en ese sentido, lo que me confunde es si debo hacerlo dentro de la gran funcion con la que voy clickeando o fuera de ella.
  #7 (permalink)  
Antiguo 30/06/2015, 12:11
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: Cargando capas

La idea de usar esos métodos es la de no tener que depender de un determinado bloque de código, por eso es que son asociados al documento, para detectar la ocurrencia de la petición asíncrona y el fin de esta en el documento y no en un elemento del mismo.

Pueden ir por fuera y no habría ningún problema.
__________________
«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
  #8 (permalink)  
Antiguo 30/06/2015, 12:14
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Cargando capas

Gracias Alexis. Si, el problema es que son diversos bloques y diferentes llamadas y por eso aislo en cada funcion cada vez que el usuario tiene que ir para atras y para adelante.
  #9 (permalink)  
Antiguo 30/06/2015, 12:22
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: Cargando capas

Ya veo.

En ese caso, puedes usar otras formas, por ejemplo, mediante promesas:

Código Javascript:
Ver original
  1. /* Ejecución de una petición asíncrona cualquiera */
  2.  
  3. //Ocultas al elemento
  4. $("#ejemplo").hide();
  5.  
  6. //Ejecutas la petición asíncrona
  7. var x = $.post(/* ... */);
  8.  
  9. //Cuando la petición se complete y sea exitosa
  10. $.when(x).then(function(respuesta){
  11.     //Muestras al elemento y muestras la respuesta en él (o lo que desees hacer)
  12.     $("#ejemplo").show().html(respuesta);    
  13. });

Que también podrías usarla directamente con el método $.post():

Código Javascript:
Ver original
  1. $.post(/* ... */).then(/* ... */);

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
  #10 (permalink)  
Antiguo 30/06/2015, 12:30
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Cargando capas

Eres un genio, no solo me ayudaste a comprenderlo y solucionarlo sino que pude entender mejor el tema de las promesas , q no me quedaba claro,
te debo una amigo (o varias, mejor dicho) .
un saludo gigante!

Etiquetas: capas, cargando
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 11:20.