SlideShare una empresa de Scribd logo
1 de 20
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

La actualidad más candente

Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQueryContinuum
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquerykaolong
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPressAsier Marqués
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónRodrigo Miranda
 
Clic de banners
Clic de bannersClic de banners
Clic de bannersflashter
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con phpFer Nando
 
Php excel
Php excelPhp excel
Php excelpcuseth
 
jQuery
jQueryjQuery
jQueryCoya14
 
3 desarollo manejo datos capitulo 3 -01 arreglo objetos
3 desarollo manejo datos capitulo 3 -01 arreglo objetos3 desarollo manejo datos capitulo 3 -01 arreglo objetos
3 desarollo manejo datos capitulo 3 -01 arreglo objetosluis freddy
 
Primitive Obsession. FrontFest 2020
Primitive Obsession. FrontFest 2020Primitive Obsession. FrontFest 2020
Primitive Obsession. FrontFest 2020Aida Albarrán
 

La actualidad más candente (20)

Introducción a JQuery
Introducción a JQueryIntroducción a JQuery
Introducción a JQuery
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQuery
 
Charla Jquery
Charla JqueryCharla Jquery
Charla Jquery
 
55
5555
55
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Clic de banners
Clic de bannersClic de banners
Clic de banners
 
Clase 6 objetos de javaScript
Clase 6 objetos de javaScriptClase 6 objetos de javaScript
Clase 6 objetos de javaScript
 
Clase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScriptClase 7 objetos globales de javaScript
Clase 7 objetos globales de javaScript
 
Jquery
JqueryJquery
Jquery
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
 
Php excel
Php excelPhp excel
Php excel
 
Clase 5 funciones en javaScript
Clase 5 funciones en javaScriptClase 5 funciones en javaScript
Clase 5 funciones en javaScript
 
jQuery
jQueryjQuery
jQuery
 
3 desarollo manejo datos capitulo 3 -01 arreglo objetos
3 desarollo manejo datos capitulo 3 -01 arreglo objetos3 desarollo manejo datos capitulo 3 -01 arreglo objetos
3 desarollo manejo datos capitulo 3 -01 arreglo objetos
 
Ireport
IreportIreport
Ireport
 
89 Php. Tablas Inno Db
89 Php. Tablas Inno Db89 Php. Tablas Inno Db
89 Php. Tablas Inno Db
 
Primitive Obsession. FrontFest 2020
Primitive Obsession. FrontFest 2020Primitive Obsession. FrontFest 2020
Primitive Obsession. FrontFest 2020
 

Destacado

Casewise EA Foundation (FR) - Episode 4/4
Casewise EA Foundation (FR) - Episode 4/4Casewise EA Foundation (FR) - Episode 4/4
Casewise EA Foundation (FR) - Episode 4/4Jean-Patrick Ascenci
 
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFE
Journal Carenews  décembre 2015 avec frédérique bel, marraine de l'AMFEJournal Carenews  décembre 2015 avec frédérique bel, marraine de l'AMFE
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFEAssociation Maladies Foie
 
Gilbert Legrand sculptures
Gilbert Legrand sculpturesGilbert Legrand sculptures
Gilbert Legrand sculpturesmaherran
 
Textos del Padre Federico Salvador Ramón - 16
Textos del Padre Federico Salvador Ramón - 16Textos del Padre Federico Salvador Ramón - 16
Textos del Padre Federico Salvador Ramón - 16Antonio García Megía
 
Ecommerce : Pour un développement de l'Economie Numérique à la Réunion
Ecommerce : Pour un développement de l'Economie Numérique à la RéunionEcommerce : Pour un développement de l'Economie Numérique à la Réunion
Ecommerce : Pour un développement de l'Economie Numérique à la RéunionSilicon Village
 
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...Stéphane Legrand
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mareValtech
 
La strategie regionale d'innovation la reunion
La strategie regionale d'innovation la reunionLa strategie regionale d'innovation la reunion
La strategie regionale d'innovation la reunionSilicon Village
 
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...Eolas Wkg
 

Destacado (20)

Por Que Invertir En Panamá
Por Que Invertir En PanamáPor Que Invertir En Panamá
Por Que Invertir En Panamá
 
Estructura Financiera Del Proyecto
Estructura Financiera Del Proyecto Estructura Financiera Del Proyecto
Estructura Financiera Del Proyecto
 
C:\Fakepath\Offsho[1]
C:\Fakepath\Offsho[1]C:\Fakepath\Offsho[1]
C:\Fakepath\Offsho[1]
 
5 Sesion, Conferencia 1 Prospecta 2009
5 Sesion, Conferencia 1   Prospecta 20095 Sesion, Conferencia 1   Prospecta 2009
5 Sesion, Conferencia 1 Prospecta 2009
 
Casewise EA Foundation (FR) - Episode 4/4
Casewise EA Foundation (FR) - Episode 4/4Casewise EA Foundation (FR) - Episode 4/4
Casewise EA Foundation (FR) - Episode 4/4
 
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFE
Journal Carenews  décembre 2015 avec frédérique bel, marraine de l'AMFEJournal Carenews  décembre 2015 avec frédérique bel, marraine de l'AMFE
Journal Carenews décembre 2015 avec frédérique bel, marraine de l'AMFE
 
A F R I C A
A F R I C AA F R I C A
A F R I C A
 
COPD NICE guidelines 2004
COPD NICE guidelines 2004COPD NICE guidelines 2004
COPD NICE guidelines 2004
 
Gilbert Legrand sculptures
Gilbert Legrand sculpturesGilbert Legrand sculptures
Gilbert Legrand sculptures
 
Textos del Padre Federico Salvador Ramón - 16
Textos del Padre Federico Salvador Ramón - 16Textos del Padre Federico Salvador Ramón - 16
Textos del Padre Federico Salvador Ramón - 16
 
Ecommerce : Pour un développement de l'Economie Numérique à la Réunion
Ecommerce : Pour un développement de l'Economie Numérique à la RéunionEcommerce : Pour un développement de l'Economie Numérique à la Réunion
Ecommerce : Pour un développement de l'Economie Numérique à la Réunion
 
Conceptos Clave (Apoyo Para Certificacion)
Conceptos Clave (Apoyo Para Certificacion)Conceptos Clave (Apoyo Para Certificacion)
Conceptos Clave (Apoyo Para Certificacion)
 
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
Résolution de problèmes de classification par algorithmes évolutionnaires grâ...
 
Engenharia
EngenhariaEngenharia
Engenharia
 
Les démarches qualité en pme
Les démarches qualité en pmeLes démarches qualité en pme
Les démarches qualité en pme
 
Programme lab 2-11 déc. 2015, paris (fr)
Programme lab   2-11 déc. 2015, paris (fr)Programme lab   2-11 déc. 2015, paris (fr)
Programme lab 2-11 déc. 2015, paris (fr)
 
4 As AdWords de Google
4 As AdWords de Google4 As AdWords de Google
4 As AdWords de Google
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
La strategie regionale d'innovation la reunion
La strategie regionale d'innovation la reunionLa strategie regionale d'innovation la reunion
La strategie regionale d'innovation la reunion
 
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
Les 10 chiffres clés de l'immobilier 2012 en Savoie et Haute-Savoie, Fnaim d...
 

Similar a Ajax

3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones coleccionesluis freddy
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collectionsflekoso
 
Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysquljuan_j_condolo
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlJesus Machicado Gomez
 

Similar a Ajax (20)

Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Manual De Ajax En Espanol
Manual De Ajax En EspanolManual De Ajax En Espanol
Manual De Ajax En Espanol
 
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
3 desarollo manejo datos capitulo 4 -02 aplicaciones colecciones
 
Introduccion a Jquery
Introduccion a JqueryIntroduccion a Jquery
Introduccion a Jquery
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Jquery parte 1
Jquery parte 1Jquery parte 1
Jquery parte 1
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
PHP - MYSQL
PHP - MYSQLPHP - MYSQL
PHP - MYSQL
 
ASP.NET MVC - AJAX
ASP.NET MVC - AJAXASP.NET MVC - AJAX
ASP.NET MVC - AJAX
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
Conexion Entre Php Y Mysqul
Conexion Entre Php Y MysqulConexion Entre Php Y Mysqul
Conexion Entre Php Y Mysqul
 
Guía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sqlGuía práctica desarrollo web con php 5 y my sql
Guía práctica desarrollo web con php 5 y my sql
 
Ajax
AjaxAjax
Ajax
 
Ajax
AjaxAjax
Ajax
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 

Último (15)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 

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(); } ?>}