[Jquery-Es] Fw: Sincronización de eventos .load y .post
Sebastián Würtz
dumbomalo en yahoo.com.ar
Mar Feb 5 02:41:37 PST 2008
Chango escribió:
> 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
> );
>
>
>
>
>
> _______________________________________________
> 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
>
>
bueno, no soy experto en jquery, pero estoy haciendo una web y estoy
usando tanto del mismo..., creo que lo tuyo debería funcionar, te dejo
el ejemplo de como lo use yo, es un poco mas complejo.
$(".utilizar_form a").click(function() {
$("#como_anunciar_form_cont").slideUp("slow", function() {
$.get("como_anunciar_form.htm", function(data) {
$("#como_anunciar_form_cont").html(data);
$.get("_token.php", function(txt) {
$("#como_anunciar_form").append('<input
type="hidden" name="ts" value="'+txt+'" />');
var v = jQuery("#como_anunciar_form").validate({
debug: true,
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
dataType: "json",
before: function() { $('#loading
p').html('Aguarde un segundo por favor, estamos enviando los datos...'); },
success:
procesar_anunciar_resultados
});
}
});
});
});
});
$("#como_anunciar_form_cont").slideDown("slow");
return false;
});
Más información sobre la lista de distribución Jquery-Es