El grupo al cual envías entradas es un grupo Usenet. Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
y para renderear, ya no tengo q escribir ningun js xq zend lo crea on the fly. Dicho sea de paso, zendx_jquery esta hecho para cargar jquery y jqueryUI de modo que cosas como este datePicker funcionen correctamente. Para mi sorpresa, funciona aun llamando estos formularios via AJAX, lo cual es bastante bueno. Sin embargo, resulta que por cada peticion que hago de ajax de estos forms, hace una nueva lectura de las librerias jquery y jqueryUI. Todo funciona correctamente, pero no quisiera q volviera a cargar estos archivos pues hace peticiones innecesarias al servidor y aunq sea de forma minima, pero consume un poco de recursos extras, q no podemos permitir cuando el sitio este en linea xq tendra un trafico alto. Ademas la carga de esos archivos no es necesaria xq el template ya los lee desde un principio.
La duda en concreto es: Como hago para que cada elemento nuevo cargado por AJAX, no lea inecesariamente estos archivos??
incluyo una imagen en la cual se ve que por cada respuesta de validar-titular-cuenta lee una cada una de las dos librerias, lo cual significa q si hago 3 llamados, hará 6 peticiones innecesarias. Espero que alguien pueda ayudarme con esto.
OK, OK... esta está bien fácil, pero tiene mucho ruido para entender que es lo que está pasando... osea que vamos a simplificar usando variables:
Tengo un $bloqueDeCodigoJS que se incluye en la $vista. Para que funcione depende de $libreriaJS. Hago una LLAMADA_AJAX al controler desde una $vistaPrincipal que ya tiene incluida la $libreriaJS. La $vista me retorna también la $libreriaJS en cada LLAMADA_AJAX y se duplica la $libreriaJS ... como hago para que no la incluya.
Creo que eso es lo mas resumido que se puede hacer.. quitando todo el detalle que el mago usa para oculatar el truco, podemos identificar mas fácil donde está la magia
En tu Zend project tenés un Zend_Layout, y es ahí donde estás agregando la librería JQ, JQUI
> Saludos gente, no se si aca hay alguien q ya haya usado zendx_jquery antes, > pero igual pregunto
> Les cuento el problemita q tengo (q en realidad no es algo grave):
> Para poder usar ZendX_Jquery, en el bootstrap debo colocar: > ZendX_JQuery::enableView($view); > $view->jQuery()->enable(); > $view->jQuery()->uiEnable();
> lo cual autoriza al sitio a utilizar jquery y jqueryUI y lo inyecto en el > template con
> y para renderear, ya no tengo q escribir ningun js xq zend lo crea on the > fly. Dicho sea de paso, zendx_jquery esta hecho para cargar jquery y > jqueryUI de modo que cosas como este datePicker funcionen correctamente. > Para mi sorpresa, funciona aun llamando estos formularios via AJAX, lo cual > es bastante bueno. Sin embargo, resulta que por cada peticion que hago de > ajax de estos forms, hace una nueva lectura de las librerias jquery y > jqueryUI. Todo funciona correctamente, pero no quisiera q volviera a cargar > estos archivos pues hace peticiones innecesarias al servidor y aunq sea de > forma minima, pero consume un poco de recursos extras, q no podemos permitir > cuando el sitio este en linea xq tendra un trafico alto. Ademas la carga de > esos archivos no es necesaria xq el template ya los lee desde un principio.
> La duda en concreto es: Como hago para que cada elemento nuevo cargado por > AJAX, no lea inecesariamente estos archivos??
> incluyo una imagen en la cual se ve que por cada respuesta de > validar-titular-cuenta lee una cada una de las dos librerias, lo cual > significa q si hago 3 llamados, hará 6 peticiones innecesarias. > Espero que alguien pueda ayudarme con esto.
y aun asi renderea el jquery, lo cual tiene sentido, xq la vista q trae ajax no incluye echo $this->jquery(), pero esta el del template general q esta sirviendo para otras cosas y es ese el que me esta jodiendo
se me ocurre cachearlo x headers del server a ver q pasa
> y aun asi renderea el jquery, lo cual tiene sentido, xq la vista q trae > ajax no incluye echo $this->jquery(), pero esta el del template general q > esta sirviendo para otras cosas y es ese el que me esta jodiendo
> se me ocurre cachearlo x headers del server a ver q pasa
Simon, y le peló... lo probé en un plugin_controller, en el action y el archivo de la vista y en ninguno le hace efecto
el template tiene <?php if($this->jQuery()->isEnabled()){ echo $this->jQuery() ->setLocalPath('/js/jquery-1.4.2.min.js') ->setUiLocalPath('/js/jquery-ui-1.8.2.custom.min.js') .PHP_EOL;
}
y si no lo necesita, no lo incluye, pero en el tempate hay un accordion, por lo tanto siempre lo incluye, si a la llamada le coloco el
de todas formas lo carga por el $this->jQuery() del template, si desactivo el accordion, el problema persiste xq segun la documentacion oficial: "The jQuery() view helper simplifies setup of your jQuery environment in your application. It takes care of loading the core and ui library dependencies if necessary and acts as a stack for all the registered onLoad javascript statements. *All jQuery view helpers put their javascript code onto this stack.*"
On Thu, Jul 15, 2010 at 11:52 AM, Attakinsky <attakin...@gmail.com> wrote: > Simon, y le peló... lo probé en un plugin_controller, en el action y el > archivo de la vista y en ninguno le hace efecto
> el template tiene > <?php > if($this->jQuery()->isEnabled()){ > echo $this->jQuery() > ->setLocalPath('/js/jquery-1.4.2.min.js') > ->setUiLocalPath('/js/jquery-ui-1.8.2.custom.min.js') > .PHP_EOL; > }
> y si no lo necesita, no lo incluye, pero en el tempate hay un accordion, > por lo tanto siempre lo incluye, si a la llamada le coloco el
> de todas formas lo carga por el $this->jQuery() del template, si desactivo > el accordion, el problema persiste xq segun la documentacion oficial: > "The jQuery() view helper simplifies setup of your jQuery environment in > your application. It takes care of loading the core and ui library > dependencies if necessary and acts as a stack for all the registered onLoad > javascript statements. *All jQuery view helpers put their javascript code > onto this stack.*"
perdon x el flooding, pero lo que elimine fue el codigo q cargaba "magicamente" las librerias, ahora las coloque hardcoded y no dan problema
En mi opinion, es un bug de ZendX el hecho de q esa carga automática no sea opcional. Pues de poder desactivarla no habria problema. Y no me afectaba solo en eso, sino que al releer jquery, otros plugins como jgrowl dejaban de funcionar dicendo cosas como jgrowl is not a function.
> perdon x el flooding, pero lo que elimine fue el codigo q cargaba > "magicamente" las librerias, ahora las coloque hardcoded y no dan > problema
> En mi opinion, es un bug de ZendX el hecho de q esa carga automática > no sea opcional. Pues de poder desactivarla no habria problema. Y no > me afectaba solo en eso, sino que al releer jquery, otros plugins como > jgrowl dejaban de funcionar dicendo cosas como jgrowl is not a > function.
Eso q decís, si lo hice y rendereaban a atravez de otro template y que no tenia nada y validaba el tipo de request. Pero al parecer y x lo que lei en foros, zendX solo necesita un echo $this->jQuery() para armar los plugins tipo datepicker o autocomplete... y aunq mis vistas no pasaban por el layout q no tenia ese ese echo, de todas formas si lo hacia a traves del layout principal.
De hecho de momento se toma tantas libertades, q si no le indico la ruta del jquery, zenx inyecta el de google apis automaticamente sin preguntar si puede hacerlo o no. Y ni en la documentacion ni en foros ni la api de zenx pude encontrar una forma de ponerle un false a este comportamiento. Yo imagino q es por cosas comom estas que aun forma parte de de zendx y no del core de zend.