|
|
(12 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
− | ===Objetivo===
| + | {{TEP}} |
− | *La intención es que php genere una página html que entrega al cliente y que contenga código ajax, de modo que cuando el cliente lo necesite solicite recargar solo parte de la página.
| + | |
− | *En este caso pretendemos que sea el servidor el que genere este código, y no generarlo directamente en el cliente.
| + | |
− | *Existen situaciones en las cuales puede ser interesante aplicar esta forma de proceder.
| + | |
| | | |
− | *Muchas de estas librerías suelen apoyarse en librerías JavaScript como jQuery para la ejecución de código en el cliente.
| + | {{:Usuario:ManuelRomero/PHP/xajax/nav}} |
− | *Podemos ver estas librerías en
| + | <br /> |
− | #http://ajaxpatterns.org/PHP_Ajax_Frameworks
| + | __NOTOC__ |
− | #http://www.ribosomatic.com/articulos/top-librerias-ajax-dhtml-y-javascript/
| + | |
− | *Vamos a estudiar un poco por encima Xajax, por ser una librería de código abierto y de sencillo uso.
| + | |
− | *Ha estado muchos años caída, pero actualmente se ha recuperado el proyecto y por lo tanto lo vamos a utilizar
| + | |
− | ===Xajax===
| + | |
− | *Para instalarlo vamos a la página oficial
| + | |
− | http://www.xajax-project.org/en/home/
| + | |
− | *En la sección download podemos bajar la versión 0.6 (es beta, pero funciona ok). Para un sitio en producción se recomienda la última estable (0.5)
| + | |
− | *Nos interesan las carpetas '''''xajax_core''''' y '''''xajax_js''''', las cuales incorporaremos a nuestro proyecto
| + | |
− | *Además en el fichero php donde vayamos a usarlo lo incluiremos
| + | |
− | <source lang=php
| + | |
− | require_once (./xajax_core/xajax_inc.php');
| + | |
− | </source> | + | |
− | *Nosotros usaremos la clase '''''xajax''''', podemos ver su documentación en la misma página sección '''''doc&tutorial'''''
| + | |
− | http://www.xajax-project.org/en/docs-tutorials/api-docs/xajax-core/xajax-inc-php/xajax/
| + | |
− | ===Usando xajax===
| + | |
− | *Para usar esta tecnología con esta clase
| + | |
− | <source lang=php>
| + | |
− | require_once (./xajax_core/xajax_inc.php');
| + | |
− | | + | |
− | $miXajax = new xajax();
| + | |
− | </source>
| + | |
− | *La clase necesita incluir una serie de código en javascript en la página que vamos a generar, '''''printJavascript()'''''
| + | |
− | </source>
| + | |
− | ....
| + | |
− | $miXajax->printJavascript()
| + | |
− | </source>
| + | |
− | *Prueba a ver el resultado de la página con lo escrito hasta ahora
| + | |
− | *En caso de que la librería de '''''xajax_js''''', no esté en la carpeta actual, hay que confirugarlo
| + | |
− | <source lang=php>
| + | |
− | ...
| + | |
− | $miXajax->configure ('javascript URI','./libs/');
| + | |
− | | + | |
− | ....
| + | |
− | </source>
| + | |
− | | + | |
− | *Podemos también establecer (solo para el desarrollo), que nos de un traceo del proceso
| + | |
− | <source lang=php>
| + | |
− | ...
| + | |
− | $miXajax->configure ('debug',true);
| + | |
− | | + | |
− | ....
| + | |
− | </source>
| + | |
− | *A continuación debemos registrar aquellas funciones que queremos ejecutar en modo ajax.
| + | |
− | Es decir el cliente puede solicitar para recargar solo parte de la página que se ejecute una función. Estas funciones las debemos de registrar primero
| + | |
− | | + | |
− | <source lang=php>
| + | |
− | ...
| + | |
− | $ajax->register(XAJAX_FUNCTION, 'saludar');
| + | |
− | | + | |
− | ....
| + | |
− | </source>
| + | |
− | | + | |
− | *Esto implicará que se en la página html se cree una función que tiene este nombre con el prefijo '''''xajax_'''''
| + | |
− | *En el caso anterior se creará una función llamada '''''xajax_saludar(...)'''''
| + | |
− | *Y para terminar este proceso de configuración, debemos usar el método que se encargue de procesar las llamadas ajax que se reciban
| + | |
− | | + | |
− | <source lang=php>
| + | |
− | ...
| + | |
− | $ajax->processRequest();
| + | |
− | | + | |
− | ....
| + | |
− | </source>
| + | |
− | *El método '''''processRequest()''''' debe ser invocado antes de sacar ninguna salida
| + | |
− | {{Resumen|
| + | |
− | <source lang=php>
| + | |
− | <?php
| + | |
− | //cargo la librería de xajax
| + | |
− | require ('xajax_core/xajax.inc.php');
| + | |
− | | + | |
− | $ajax = new xajax();
| + | |
− | | + | |
− | //Para poder tener una traza de lo que ocurre
| + | |
− | $ajax->configure('debug',true);
| + | |
− | //Especificar la ubicación de la librería (En este caso innecesario)
| + | |
− | $ajax->configure('javascript URI','./');
| + | |
− | | + | |
− | //Estas funciones podrán ser invocadas de forma asíncrona desde el cleinte
| + | |
− | $ajax->register(XAJAX_FUNCTION, 'saludar');
| + | |
− | $ajax->register(XAJAX_FUNCTION, 'otraFuncion');
| + | |
− | //Estas acciones implicarán que en el html del cliente se creen las funciones xajax_saludar () y xajax_otraFuncion()
| + | |
− | | + | |
− | | + | |
− | //Este método procesará las llamadas que reciba la página ????
| + | |
− | //Imporante llamarla antes de que el guión genere ningúna salida.
| + | |
− | $ajax->processRequest();
| + | |
− | | + | |
− | | + | |
− | //La librería necesita generar código java script en la página que enviamos al cliente
| + | |
− | $ajax->printJavascript();
| + | |
− | | + | |
− | </source>
| + | |
− | }}
| + | |
− | ===Implementando el método xajax en el servidor===
| + | |