[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