Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Jaxon/conceptos

De WikiEducator
Saltar a: navegación, buscar


Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg


Qué es Ajax

AJAX, siglas que referncian a JavaScript y XML Asíncrono.



Icon define.gif
Que es Ajax
  • Es una Tecnología que va a permitir que el cliente haga una solicitud de datos al servidor. Al ser recibida por el cliente, hace que éste actualice parte de la página desde donde se solicitó manteniendo intacta el resto de la misma.



Icon activity.jpg
Algunas precisiones
  • Ajax' más que una tecnología es una técnica que combina varias tecnologías existentes hace muchos muchos años
  1. HTML
  2. CSS
  3. DOM
  4. XMLHttpRequest
  5. XML
  6. Javascript




  • En el proceso vemos que hay una serie de pasos o acciones
  1. Cliente solicita algo (evento javascript que hace una solicitud al servidor)
  2. El servidor recibe la solicitud y empaqueta datos en formato xml que entrega al cliente
  3. El cliente recibe los datos y con ellos se actualiza parte de la página
  • En la imagen siguiente podemos ver el proceso de la relaciónentre cliente y servidor

Funcionamiento ajax.png

Dónde se espcefician el código para que esto funcione

  • Realmente esta es una cuestión que hay que pensar un momento para no crear confusión

Siempre que usemos esta tecnología necesitamos que los mismos elementos estén en acción


Icon key points.gif

Escenario Ajax

  1. Evento de java script que va a hacer la solicitud
  2. Método en el servidor que atiende dicha solicitud
  3. El servidor entrega xml al cliente con el resultado de la solicitud
  4. El cliente renderiza parte de la página con los datos que recibe si procede


  • Este escenario lo podemos implementar con diferentes tecnologías.
  • Como hemos visto anteriormente lo que nos faltaría es saber como se comunia cliente servidor y servidor cliente para enviar/recibir la solicud/datos

Ajax cliente servidor.png

  • Como vemos en la imagen la comunicación entre cliente y servidor utiliza un objeto XMLHttpRequest
  • Para facilitar el trabajo de acceder directamente al objeto, se utilizan framework como nos ofrece jquery, react, vue, ...
  • También hay librerías que desde php podemos establecer este escenario
  • Nosotros vamos a hacerlo con jaxon una librería que actualiza xajax proyecto que se abandonó ante la nueva versión de php 7.x

Jaxon

  • La página la tenemos en


Icon key points.gif

Instalción

  • Usando composer
composer require jaxon-php/jaxon-core:~2.0


  • Una vez instalado vemos que en el directorio actual ha creado una carpeta jaxon-php/jaxon-core donde se ubica todos los fuentes de nuestra librería

App1 ajax.png

  • Vamos a ver su funcionamiento práctico, si bien tenemos muchas funcionalidades incluso podemos usar jquery como un método del objeto jaxon, pero para eso, personalmente pienso que es mejor usar jquery o bien nuevos y más potentes framworks como Vue o React.

Usando jaxon en nuestro proyecto

  • Vamos a separar todo en ficheros independientes


Icon activity.jpg
Actividad
  • Implementamos una aplicación con un formulario y una caja de texto
  • Si hacemos un click realizaremos una llamada ajax para que nos visualice el contenido de la caja de texto en máyúscula



  • Para proceder en este proyecto hemos de implementar acciones tanto en el cliente como en el servidor
  • Este planteaminto es genérico o común independientemente de lo que usemos para construir el escenario 'ajax'

1.-La parte del servidor 2.-La parte del cliente

La parte del servidor

Iniciamos el objeto jaxon para preparar el entorno


La parte del cliente


Usando jaxon para escribir script en el cliente para que funcione la solicitud ajax
  1. 1.- primero preparamos el código javascript en la página del cliente
  2. 2.- Preparamos los métodos en el servidor que van a ser invocados por ajax
  3. 3.- Preparamos la solicitud en el cleinte y el espacio donde renderizar los datos que vengan del servidor
1.- primero preparamos el código javascript en la página del cliente
Icon activity.jpg
1.1-creamos el objeto jaxon
<?php
//Usamos composer para cagar los ficheros necesarios para usar los métodos de diferentes clases
require_once "vendor/autoload.php";
 
// Obtenemos un objeto de la clase jaxon a traveś de un método que nos devuelve un objeto jaxon
$jaxon = jaxon(); //método ubicado en el fichero vendor/jaxon-php/jaxon-core/src/start.php
?>





Icon activity.jpg
1.2-Cargamos estilos de jaxon (opcional)
  • En el html, mejor en cabecera cargamos los estilos propios de jaxon
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <?=$jaxon->getCss() // Insert the Jaxon CSS code into the page?>
</head>





Icon activity.jpg
1.3-Escribimos el código javascript para enviar las solicitudes XMLHttpRequest
  • En el html, mejor en cabecera cargamos los estilos propios de jaxon
.....
</body>
<?php
// Insert the Jaxon javascript code into the page
echo $jaxon->getJs();
echo $jaxon->getScript();
?>
</body>



  • Si ejecutamos ahora el proyecto vemos que no sale nada ya que no hemos generado ninguna salida
  • Sin embargo si vemos el código fuente, podremos ver todo el código
<?php
/**
 * Created by PhpStorm.
 * User: manuel
 * Date: 15/04/19
 * Time: 16:57
 */
require_once "vendor/autoload.php";
// Obtenemos un objeto de la clase jaxon a través de un método que nos devuelve un objeto '''''jaxon'''''
$jaxon = jaxon();
?>
 
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <?=$jaxon->getCss() //<!--   // Insert the Jaxon CSS code into the page?>
</head>
<body>
<?php
// Insert the Jaxon javascript code into the page
echo $jaxon->getJs();
echo $jaxon->getScript();
?>
</body>
</html>
  • Genera la siguiente salida
2.- Preparamos los métodos en el servidor que van a ser invocados por ajax
  • Creamos un fichero llamado servidor.php , lo podríamos hacer en el mismo index.php, pero por separar en ficheros los contenidos


Icon activity.jpg
2.1-Indicamos que usamos la clase Response de jaxon
<?php
<?php
/**
 * Created by PhpStorm.
 * User: manuel
 * Date: 16/04/19
 * Time: 17:02
 */
 
//Especificamos la clase que vamos a usar (psr-4)
use Jaxon\Response\Response;
 
/**
 * Class Respuesta_Ajax
 * creamos una clase cuyos métodos van a ser
 * las accinoes que el cliente puede solicitar por ajax
 * el servidor solo ejecuta ese método
 * devuelve meditane un objeto Response datos al cliente
 */
class Respuesta_Ajax{
    /**
     * emite un mensaje de saludo
     */
    public function saluda(){
        $msj="Hola desde el servidor";
        $response = new Response();
        $response->alert("ahora llegarán datos del servidor");
        $response->assign('div_saludo', 'innerHTML', $msj)
        return $response;
    }
 
    /**
     * @param $user un string
     * Valida un usuario, en este caso que sea "admin" o no
     */
    public function valida($user){
        if ($user =="admin")
            $msj="El usuario está validado";
        else
            $msj="Usuario no válido vuelva a insertar";
        $response = new Response();
        $response->assign('div_valida', 'innerHTML', $msj)
        return $response;
    }
 
    /**
     * @param $color red o green
     * va a cambiar el color red por green o al revés
     * para ponerlo de fondo a un determinado div
     */
    public function cambia_color($color){
        $color = $color=="red" ? "green": "red";
        $response = new Response();
        $response->assign('div_color', 'backgroud', $msj)
        return $response;
    }
 
?>
</body>




3.- Preparamos la solicitud en el cleinte y el espacio donde renderizar los datos que vengan del servidor



Icon activity.jpg
1.3-Escribimos el código javascript para enviar las solicitudes XMLHttpRequest
  • En el html, mejor en cabecera cargamos los estilos propios de jaxon
  • Ahora debemos generar los eventos en javascript para invocar a los métodos del servidor+
  • Debemos especificar la sección html dónde que actulizarán según la especificación del servidor
.....
</body>
<?php
// Insert the Jaxon javascript code into the page
echo $jaxon->getJs();
echo $jaxon->getScript();
?>
</body>





Plantilla:MRM Notas