SlideShare una empresa de Scribd logo
PRINCIPIO Y DISEÑO DE APLICACIONES A REDES
Ejemplo de Ajax
Tenemos un botón (o cualquier otro elemento) cuya función es, al ser presionado, crear un objeto que será el encargado de recoger ciertos datos de nuestra base de datos y con ellos refrescar un determinado sector de nuestra página
Al presionar el botón correspondiente, ir al soporte de datos en búsqueda de los registros que contiene y luego mostrarlos en pantalla. Se le añadirá al sistema un campo input el cual tendrá como función insertar los datos que coloquemos en él en la base de datos
Comenzamos definiendo la estructura de las tablas en base de datos con un juego de registros iniciales:  CREATE TABLE `cache` (  `id` int(11) NOT NULL auto_increment,  `valor` varchar(255) NOT NULL,  PRIMARY KEY (`id`)  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;  INSERT INTO `cache` (`id`, `valor`) VALUES (1, 'Dato 1'),  (2, 'Dato 2');
Tendremos también dos scripts. El primero será nuestro .html que contendrá los campos de formulario y las funciones en JavaScript encargadas de la comunicación asincrónica. El segundo será el código que actúa como servidor y su función será realizar las operaciones de INSERT y SELECT en la base de datos.  Ejemplo: ajax_cache.html
function nuevoAjax()  {  var xmlhttp=false;  try  {  // Creacion del objeto AJAX para navegadores no IE  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");  }  catch(e)  {  try  {  // Creacion del objet AJAX para IE  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }  catch(E)  {  if (!xmlhttp && typeof XMLHttpRequest!="undefined") xmlhttp=new XMLHttpRequest();  }  }  return xmlhttp;  }
function mostrarDatos()  {  ajax=nuevoAjax();  ajax.open("GET", "ajax_cache_2.php?accion=mostrar", true);  ajax.onreadystatechange=function()  {  if (ajax.readyState==4)  {  document.getElementById("texto").innerHTML=ajax.responseText;  }  }  ajax.send(null);  }
function guardarDato()  {  var dato=document.getElementById("iIngreso").value;  ajax=nuevoAjax();  ajax.open("GET", "ajax_cache_2.php?accion=guardar&dato="+dato, true);  ajax.onreadystatechange=function()  {  if (ajax.readyState==4)  {  alert("Dato guardado");  }  }  ajax.send(null);  }
Si nuestra aplicación AJAX se conecta con un archivo PHP, ASP u otro que tengamos acceso y se nos permita modificar, la solución se reduce a una simple línea de código que colocaremos en dicho archivo antes de cualquier línea que genere salida ajax_cache_2.php
<?php  header(&quot;Cache-Control: no-store, no-cache, must-revalidate&quot;);  function conectar()  {  mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;);  mysql_select_db(&quot;ajax&quot;);  } function desconectar() conectar();  $registros=mysql_query(&quot;SELECT valor FROM cache&quot;);  while($fila=mysql_fetch_row($registros))  {  echo $fila[0].&quot;<br>&quot;;  }  desconectar();  }  elseif($_GET[&quot;accion&quot;]==&quot;guardar&quot;)  {
conectar();  $dato=mysql_real_escape_string($_GET[&quot;dato&quot;]);  mysql_query(&quot;INSERT INTO cache (valor) VALUES ('$dato')&quot;);  desconectar();  }  ?> {  mysql_close();  }  if($_GET[&quot;accion&quot;]==&quot;mostrar&quot;)  {
El IE cuando realiza el envío de variables vía GET a una determinada página (que llamaremos receptor.php), revisa primero que anteriormente no haya enviado una petición que contenga exactamente los mismos valores; si hubo una petición igual, cargará de su “memoria” los datos que recibió en aquella ocasión como respuesta desde el servidor. Por el contrario, si no hubo peticiones iguales, recibirá los datos actuales enviados por el servidor y los cargará en su cache para futuros usos.
Por ejemplo, si hacemos una petición a receptor.php?var1=prueba&var2=ajax y el servidor nos devuelve “Hola”, cuando intentemos enviar nuevamente a receptor.php las variables ?var1=prueba&var2=ajax el IE en lugar de realizar una nueva petición al servidor, nos volverá a mostrar “Hola”, valor que ha cargado de su cache.
Al conjunto de variables que enviamos en el método open del objeto, le añadiremos una variable más que se generará aleatoriamente. Para lograr esto debemos modificar el método open de esta forma:  var aleatorio=Math.random();  ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=mostrar&nocache=&quot;+aleatorio, true); Nuestra función mostrarDatos() quedará de la siguiente manera:
function mostrarDatos()  {  var aleatorio=Math.random();  ajax=nuevoAjax();  ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=mostrar&aleatorio=&quot;+aleatorio, true);  ajax.onreadystatechange=function()  {  if (ajax.readyState==4)  {  document.getElementById(&quot;texto&quot;).innerHTML=ajax.responseText;  }  }  ajax.send(null);  }
Y para finalizar se puede utilizar el método POST en lugar de GET para enviar datos asincrónicamente. Al utilizar POST debemos añadir el envío de un header y utilizar el método send para enviar las variables. La función mostrarDatos() quedaría:
function mostrarDatos()  {  ajax=nuevoAjax();  ajax.open(&quot;POST&quot;, &quot;ajax_cache_2.php&quot;, true);  ajax.setRequestHeader(&quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;);  ajax.send(&quot;accion=mostrar&quot;);  ajax.onreadystatechange=function()  {  if (ajax.readyState==4)  {  document.getElementById(&quot;texto&quot;).innerHTML=ajax.responseText;  }  }  }
Y por supuesto, al recibir en ajax_cache_2.php los datos mediante POST en lugar de GET, debemos cambiar POST por GET donde corresponda, por lo que el código quedará:  <?php  function conectar()  {  mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;);  mysql_select_db(&quot;ajax&quot;);  }  function desconectar()  {  mysql_close();  }
if($_POST[&quot;accion&quot;]==&quot;mostrar&quot;)  {  conectar();  $registros=mysql_query(&quot;SELECT valor FROM cache&quot;);  while($fila=mysql_fetch_row($registros))  {  echo $fila[0].&quot;<br>&quot;;  }  desconectar();  }  elseif($_GET[&quot;accion&quot;]==&quot;guardar&quot;)  {  conectar();  $dato=mysql_real_escape_string($_GET[&quot;dato&quot;]);  mysql_query(&quot;INSERT INTO cache (valor) VALUES ('$dato')&quot;);  desconectar();  }  ?>}

Más contenido relacionado

PDF
Aplicación Cliente - Servidor / GUI - Consola
PDF
Cómo domar SonataAdminBundle
PDF
Ejemplos de php_mysql
PDF
Desarrollo código mantenible en WordPress utilizando Symfony
PDF
Zen AJAX - Programador PHP
PDF
Servlets que manejan datos de formularios HTML
DOCX
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
PDF
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Aplicación Cliente - Servidor / GUI - Consola
Cómo domar SonataAdminBundle
Ejemplos de php_mysql
Desarrollo código mantenible en WordPress utilizando Symfony
Zen AJAX - Programador PHP
Servlets que manejan datos de formularios HTML
3 desarollo manejo datos capitulo 3 -02 busqueda arreglo objetos
Integrando React.js en aplicaciones Symfony (deSymfony 2016)

La actualidad más candente (20)

ODP
Introducción a JQuery
KEY
Introducción a Flask
KEY
Introducción a DJango
PDF
(Muy breve) Introduccion a jQuery
PPT
Charla Jquery
PDF
WordCamp Cantabria - Código mantenible con WordPress
PDF
Symfony parte 15 Consultas y Migración
DOCX
Clic de banners
PDF
Clase 6 objetos de javaScript
PDF
Clase 7 objetos globales de javaScript
PDF
Jquery
PDF
Intro aplicaciones web con php
DOCX
Php excel
PDF
Clase 5 funciones en javaScript
PDF
jQuery
DOCX
3 desarollo manejo datos capitulo 3 -01 arreglo objetos
PPT
Ireport
PDF
89 Php. Tablas Inno Db
PDF
Primitive Obsession. FrontFest 2020
Introducción a JQuery
Introducción a Flask
Introducción a DJango
(Muy breve) Introduccion a jQuery
Charla Jquery
WordCamp Cantabria - Código mantenible con WordPress
Symfony parte 15 Consultas y Migración
Clic de banners
Clase 6 objetos de javaScript
Clase 7 objetos globales de javaScript
Jquery
Intro aplicaciones web con php
Php excel
Clase 5 funciones en javaScript
jQuery
3 desarollo manejo datos capitulo 3 -01 arreglo objetos
Ireport
89 Php. Tablas Inno Db
Primitive Obsession. FrontFest 2020
Publicidad

Destacado (20)

PDF
PDF
5 Sesion, Conferencia 1 Prospecta 2009
PDF
Casewise EA Foundation (FR) - Episode 4/4
PDF
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFE
PPT
A F R I C A
PPT
COPD NICE guidelines 2004
PPS
Gilbert Legrand sculptures
PDF
Textos del Padre Federico Salvador Ramón - 16
PDF
Ecommerce : Pour un développement de l'Economie Numérique à la Réunion
DOC
Conceptos Clave (Apoyo Para Certificacion)
PDF
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
PPS
Engenharia
PDF
Les démarches qualité en pme
PDF
Programme lab 2-11 déc. 2015, paris (fr)
PDF
4 As AdWords de Google
PDF
Node.js, le pavé dans la mare
PDF
La strategie regionale d'innovation la reunion
PDF
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
5 Sesion, Conferencia 1 Prospecta 2009
Casewise EA Foundation (FR) - Episode 4/4
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFE
A F R I C A
COPD NICE guidelines 2004
Gilbert Legrand sculptures
Textos del Padre Federico Salvador Ramón - 16
Ecommerce : Pour un développement de l'Economie Numérique à la Réunion
Conceptos Clave (Apoyo Para Certificacion)
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
Engenharia
Les démarches qualité en pme
Programme lab 2-11 déc. 2015, paris (fr)
4 As AdWords de Google
Node.js, le pavé dans la mare
La strategie regionale d'innovation la reunion
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
Publicidad

Similar a Ajax (20)

PPT
AJAX EN CURSO PHP
PPTX
Unidad 3 AJAX
PPTX
Unidad3ajax
PDF
Taller programación web ajax con jquery
PDF
Web de noticias en Ajax
PDF
Ingresar y obtener información de base de datos con php a través de ajax arch-20
PPT
PHP+Ajax
PDF
Manual de ajax las entrañas de ajax
PPTX
PPT
Barcelona Workshop 2008
PPS
Clase 5 AJAX - Desarrollo de aplicaciones móviles
PDF
Introduccion Ajax
PDF
Introduccion ajax
DOCX
Como usar ajax con jquery
PPSX
Tecnologia AJAX
PPTX
S4-DAW-2022S1.pptx
PPT
Introduccion Ajax V1.0
ODP
Ajax
PPT
Conceptos Introductorios Del Web 2
AJAX EN CURSO PHP
Unidad 3 AJAX
Unidad3ajax
Taller programación web ajax con jquery
Web de noticias en Ajax
Ingresar y obtener información de base de datos con php a través de ajax arch-20
PHP+Ajax
Manual de ajax las entrañas de ajax
Barcelona Workshop 2008
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Introduccion Ajax
Introduccion ajax
Como usar ajax con jquery
Tecnologia AJAX
S4-DAW-2022S1.pptx
Introduccion Ajax V1.0
Ajax
Conceptos Introductorios Del Web 2

Último (20)

PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Presentación de Redes de Datos modelo osi
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
clase auditoria informatica 2025.........
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Estrategia de apoyo tecnología grado 9-3
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
Introduccion a servidores de Aplicaciones (1).pptx
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
Yogurt de tocosh (1).pptx preparacion receta
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
historia_web de la creacion de un navegador_presentacion.pptx
Presentación de Redes de Datos modelo osi
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
clase auditoria informatica 2025.........
introduccion a las_web en el 2025_mejoras.ppt
Estrategia de apoyo tecnología grado 9-3
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Introduccion a servidores de Aplicaciones (1).pptx
Temas y subtemas de las fichas 1 y 2.pdf
Yogurt de tocosh (1).pptx preparacion receta
Estrategia de apoyo tecnología miguel angel solis
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
REDES INFORMATICAS REDES INFORMATICAS.pptx
Zarate Quispe Alex aldayir aplicaciones de internet .docx
SAP Transportation Management para LSP, TM140 Col18
Influencia-del-uso-de-redes-sociales.pdf
Presentación PASANTIAS AuditorioOO..pptx
Trabajo colaborativo Grupo #2.docxmmuhhlk
Las nuevas tecnologías en la salud - enfermería técnica.

Ajax

  • 1. PRINCIPIO Y DISEÑO DE APLICACIONES A REDES
  • 3. Tenemos un botón (o cualquier otro elemento) cuya función es, al ser presionado, crear un objeto que será el encargado de recoger ciertos datos de nuestra base de datos y con ellos refrescar un determinado sector de nuestra página
  • 4. Al presionar el botón correspondiente, ir al soporte de datos en búsqueda de los registros que contiene y luego mostrarlos en pantalla. Se le añadirá al sistema un campo input el cual tendrá como función insertar los datos que coloquemos en él en la base de datos
  • 5. Comenzamos definiendo la estructura de las tablas en base de datos con un juego de registros iniciales: CREATE TABLE `cache` ( `id` int(11) NOT NULL auto_increment, `valor` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; INSERT INTO `cache` (`id`, `valor`) VALUES (1, 'Dato 1'), (2, 'Dato 2');
  • 6. Tendremos también dos scripts. El primero será nuestro .html que contendrá los campos de formulario y las funciones en JavaScript encargadas de la comunicación asincrónica. El segundo será el código que actúa como servidor y su función será realizar las operaciones de INSERT y SELECT en la base de datos. Ejemplo: ajax_cache.html
  • 7. function nuevoAjax() { var xmlhttp=false; try { // Creacion del objeto AJAX para navegadores no IE xmlhttp=new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;); } catch(e) { try { // Creacion del objet AJAX para IE xmlhttp=new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;); } catch(E) { if (!xmlhttp && typeof XMLHttpRequest!=&quot;undefined&quot;) xmlhttp=new XMLHttpRequest(); } } return xmlhttp; }
  • 8. function mostrarDatos() { ajax=nuevoAjax(); ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=mostrar&quot;, true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { document.getElementById(&quot;texto&quot;).innerHTML=ajax.responseText; } } ajax.send(null); }
  • 9. function guardarDato() { var dato=document.getElementById(&quot;iIngreso&quot;).value; ajax=nuevoAjax(); ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=guardar&dato=&quot;+dato, true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { alert(&quot;Dato guardado&quot;); } } ajax.send(null); }
  • 10. Si nuestra aplicación AJAX se conecta con un archivo PHP, ASP u otro que tengamos acceso y se nos permita modificar, la solución se reduce a una simple línea de código que colocaremos en dicho archivo antes de cualquier línea que genere salida ajax_cache_2.php
  • 11. <?php header(&quot;Cache-Control: no-store, no-cache, must-revalidate&quot;); function conectar() { mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;); mysql_select_db(&quot;ajax&quot;); } function desconectar() conectar(); $registros=mysql_query(&quot;SELECT valor FROM cache&quot;); while($fila=mysql_fetch_row($registros)) { echo $fila[0].&quot;<br>&quot;; } desconectar(); } elseif($_GET[&quot;accion&quot;]==&quot;guardar&quot;) {
  • 12. conectar(); $dato=mysql_real_escape_string($_GET[&quot;dato&quot;]); mysql_query(&quot;INSERT INTO cache (valor) VALUES ('$dato')&quot;); desconectar(); } ?> { mysql_close(); } if($_GET[&quot;accion&quot;]==&quot;mostrar&quot;) {
  • 13. El IE cuando realiza el envío de variables vía GET a una determinada página (que llamaremos receptor.php), revisa primero que anteriormente no haya enviado una petición que contenga exactamente los mismos valores; si hubo una petición igual, cargará de su “memoria” los datos que recibió en aquella ocasión como respuesta desde el servidor. Por el contrario, si no hubo peticiones iguales, recibirá los datos actuales enviados por el servidor y los cargará en su cache para futuros usos.
  • 14. Por ejemplo, si hacemos una petición a receptor.php?var1=prueba&var2=ajax y el servidor nos devuelve “Hola”, cuando intentemos enviar nuevamente a receptor.php las variables ?var1=prueba&var2=ajax el IE en lugar de realizar una nueva petición al servidor, nos volverá a mostrar “Hola”, valor que ha cargado de su cache.
  • 15. Al conjunto de variables que enviamos en el método open del objeto, le añadiremos una variable más que se generará aleatoriamente. Para lograr esto debemos modificar el método open de esta forma: var aleatorio=Math.random(); ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=mostrar&nocache=&quot;+aleatorio, true); Nuestra función mostrarDatos() quedará de la siguiente manera:
  • 16. function mostrarDatos() { var aleatorio=Math.random(); ajax=nuevoAjax(); ajax.open(&quot;GET&quot;, &quot;ajax_cache_2.php?accion=mostrar&aleatorio=&quot;+aleatorio, true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { document.getElementById(&quot;texto&quot;).innerHTML=ajax.responseText; } } ajax.send(null); }
  • 17. Y para finalizar se puede utilizar el método POST en lugar de GET para enviar datos asincrónicamente. Al utilizar POST debemos añadir el envío de un header y utilizar el método send para enviar las variables. La función mostrarDatos() quedaría:
  • 18. function mostrarDatos() { ajax=nuevoAjax(); ajax.open(&quot;POST&quot;, &quot;ajax_cache_2.php&quot;, true); ajax.setRequestHeader(&quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;); ajax.send(&quot;accion=mostrar&quot;); ajax.onreadystatechange=function() { if (ajax.readyState==4) { document.getElementById(&quot;texto&quot;).innerHTML=ajax.responseText; } } }
  • 19. Y por supuesto, al recibir en ajax_cache_2.php los datos mediante POST en lugar de GET, debemos cambiar POST por GET donde corresponda, por lo que el código quedará: <?php function conectar() { mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;); mysql_select_db(&quot;ajax&quot;); } function desconectar() { mysql_close(); }
  • 20. if($_POST[&quot;accion&quot;]==&quot;mostrar&quot;) { conectar(); $registros=mysql_query(&quot;SELECT valor FROM cache&quot;); while($fila=mysql_fetch_row($registros)) { echo $fila[0].&quot;<br>&quot;; } desconectar(); } elseif($_GET[&quot;accion&quot;]==&quot;guardar&quot;) { conectar(); $dato=mysql_real_escape_string($_GET[&quot;dato&quot;]); mysql_query(&quot;INSERT INTO cache (valor) VALUES ('$dato')&quot;); desconectar(); } ?>}