[Jquery-Es] Fw: Sincronización de eventos .load y .post

Chango changosamba en gmail.com
Lun Feb 4 20:01:14 PST 2008


Hola, Seba, me preguntaba si es lo mismo hacer esto:

function menuxproducto(id,cat){
$.ajax({
url: "producto.php",
data: "prod="+id,
success: function(msg){
alert('me conecte y envie datos, puedo hacer algo...');
},
complete: function(msg){
alert('se completo todo y mando a mostrar la data');

$("#centerbody").html(msg);
$("#centerbody").fadeIn("fast");

}

});
}

Saludos.


----- Original Message ----- 
From: "Sebastián Würtz" <dumbomalo en yahoo.com.ar>
To: "Oscar A. Garcia" <ocabeto en hotmail.com>
Cc: <jquery-es en lists.scriptia.net>
Sent: Monday, February 04, 2008 11:52 AM
Subject: Re: [Jquery-Es]Sincronización de eventos .load y .post


Oscar A. Garcia escribió:
> Hola listeros,
>
> Tengo en una página php una función javascript llamada “recabarDatos” en 
> la cual incluyo dos llamadas a la librería jQuery:
>
> - Un .load, que carga un archivo php  que a su vez muestra un flash 
> dinámico en el DIV referenciado
> - Un .post,  que carga dinámicamente otro archivo flash en otro DIV
>
> El código relevante lo pego abajo.
>
> El problema que tengo es que ambas gráficas han de mostrar el mismo 
> momento, y de hecho al final del código vemos
>
>   setInterval(recabarDatos, 60000);
>
> ...pero sin embargo a veces se descompensa el invento y la primera gráfica 
> (la del load) recarga datos más tarde de lo que debiera, con lo que los 
> datos no son coherentes, especialmente si comparo con lo aparecido en la 
> gráfica de la derecha (la del .post)
>
> ¿Alguna idea? ¿ He de usar alguna otra función de jQuery, y en ese caso 
> cómo?
> Muchas gracias,
>
> Óscar
>
> ----------------------------------------------------------------
>
> //Cuando la estructura DOM de la página termine de cargarse (pero no 
> necesariamente las imágenes)
>   $(document).ready(recabarDatos);
>   //Esta función es la que toma los datos de los php:
>   function recabarDatos()
>   {
>       //Calculo un número aleatorio entero de 5 cifras cada vez:
>       var al = Math.round ( Math.random() * 100000 );
>       //Cargo este php directamente en la div correspondiente:
> 
> $("#grafica-ocupacion").load("include/xmlocupacion.php?aleatorio="+al+" 
> #grafico-usuarios");
>     //En este caso, el php devuelve un xml del que tomamos las variables,
>         //que colocaremos en cada uno de los divs:
>         $.post("include/dbprincipal.php?aleatorio=" + al 
> +"&administracion=false", function(xml)
>          {
>         (etc etc)----------------------------
>
>         var trozoHtmlApUs = "<object 
> classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' 
> codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0' 
> width='100%' height='100%' id='graficabarras' align='middle'> 
> <param name='allowScriptAccess' value='sameDomain' />            <!--  
> Pasamos parámetros a la película para que sepa en qué sección estamos, la 
> aplicación y la fecha:-->        <param name='movie' 
> value='consultas/graficabarras.swf?topapus="  + cadenaTopApUs + "' /> 
> <param name='quality' value='high' />        <param name='bgcolor' 
> value='#f3f9fa' />        <!-- Pasamos un parámetros a la película:--> 
> <embed src='consultas/graficabarras.swf?topapus=" + cadenaTopApUs + "' 
> quality='high' bgcolor='#f3f9fa' width='100%' height='100%' 
> name='graficabarras' align='middle' allowScriptAccess='sameDomain' 
> type='application/x-shockwave-flash' 
> pluginspage='http://www.macromedia.com/go/getflashplayer' scale='exactfit' 
> />        </object>";
>         $(trozoHtmlApUs).appendTo("#grafica-apus");
>                 //Para construir el código HTML/CSS del gráfico de tarta 
> con el porcentaje de ocupación:
>         $("#grafica-tartaocu").html("");
>         var desplazamientoTarta = 20 * Math.ceil ( ( ocupacionServ * 20 ) 
> / 100 );
>         var trozoHtmlOcu = "<div style='display: block;  float: left; 
> margin-left: 15;  padding: 0;  width: 20px;  height: 20px; 
> background-image: url(images/leds/slices.gif);  background-position: -" + 
> desplazamientoTarta + "px 0px'></div>";
>
>     (etc etc)-----------------------------------------
>     }
> }
>
> //Hacemos que se ejecute la función cada X milisegundos:
>   //( 1 min. = 60000 ms. )
>   setInterval(recabarDatos, 60000);
>
>
>
> ------------------------------------------------------------
>
>
> _________________________________________________________________
> Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para 
> estar siempre a la última
> http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMaintenance&Brand=WL&RU=http%3a%2f%2fmail.live.com
> ------------ próxima parte ------------
> Se ha borrado un adjunto en formato HTML...
> URL: 
> http://lists.scriptia.net/pipermail/jquery-es-scriptia.net/attachments/20080204/da05d26d/attachment.htm 
> _______________________________________________
> Jquery-Es Lista de correo en español para usuarios de jQuery
>
> * Recuerda que debes utiliza "responder a todos" para enviar tu respuesta 
> a la lista
> * Para abrir un tema de conversación, escribe a 
> Jquery-Es en lists.scriptia.net
> * Puedes gestionar tu suscripción en 
> http://lists.scriptia.net/listinfo.cgi/jquery-es-scriptia.net
>
>

Fijate el ejemplo

$("#feeds").load("feeds.html",
  {limit: 25},
  function() { alert("The last 25 entries in the feed have been loaded"); }

podes usar el callback, osea cuando termine el .load haces la llamada al php 
que decis q es mas lento.

salu2
);







Más información sobre la lista de distribución Jquery-Es