[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