SlideShare a Scribd company logo
1 of 20
Download to read offline
menttes
 corporate training




                      AJAX a cuerda
                      Lo básico sobre AJAX y su
                      funcionamiento




                       Ambrosio, Pablo

                       pandres@menttes.com
¿Que es AJAX?




 Se refiere a un grupo de tecnologías que se usan para crear contenido web dinámico e
   interactivo.

 El término fue acuñado por Jesse J. Garret, de “Adaptive Path”, en su ensayo “AJAX: A
    new approach to web applications”.

 Es un acronismo para “Asyncronous Javascript and XML”.




                                                                          menttes
Aplicaciones Web con AJAX




Antes de AJAX hubo tecnicas similares, mas bien hacks (frames, iframe, remote scripting).
A partir de la disponibilidad de XMLHTTPRequest en los browsers, el marketinero término
AJAX y ejemplos como Gmail, Google Maps o Flickr, AJAX tomó mucho impulso.

Antes un cambio requería volver a cargar toda la página.

Se usa para edición inplace, drag and drop, animaciones CSS, transiciones.

Permite a las aplicaciones web tomar un lugar que antes solo ocupaban las aplicaciones
de escritorio.




                                                                             menttes
Comunicación Síncrona




                        menttes
Comunicación Asíncrona




  Con comunicacion asíncrona no hay que esperar la respuesta para poder
  usar la página.



                                                              menttes
Tecnologías AJAX




●   XML
(eXtensible Markup Language) Representa la X en AJAX. Es la Lingua Franca
para el intercambio de datos. Es el formato de datos que se usa para la
comunicación entre el browser y el servidor.
Las páginas web en las aplicaciones AJAX son XHTML (eXtensible HyperText
Markup Language) que es XML, y sucesor de HTML.
Algunas ventajas de usar XHTML son la disponibilidad de herramientas para
manipular los documentos de este tipo, la compatibilidad con XML, funciona
tanto con HTML DOM como con XML DOM, y portabilidad a agentes que no sean
browsers.




                                                              menttes
Tecnologías AJAX




●   W3C DOM
Es una representacion orientada a objetos de documentos HTML y XML. provee
una API para manipularlos (estadarizado por W3C).
JavaScript implementa una API para DOM, y este provee elemtos estádar para
que con JavaScript se puedan asociar eventos a los elementos de una página
web.

●   CSS
(Cascading Style Sheets) Provee una forma unificada de controlar la apariencia
de la interface. Usando CSS se puede manipular cualquier especto de la
presentacion de la página, colores, tamaños y posiciones. Un uso común de
esto es para representar transiciones y cambios en la interface y dar feedback
al usuario.



                                                                  menttes
Tecnologías AJAX




●   XMLHTTPRequest
Representa la comunicacion en AJAX. Es una clase de JavaScript que envía y
recibe httprequests y responde desde y hacia servidores. Esto es lo que hace
posible que funcione AJAX. Funciona como si el browser estuviera haciendo una
pedido normal para cargar una página o enviar un form, pero sin que el usuario
tenga que abandonar la página actual. Fue implementado por Microsoft para
IE5 como un objeto ActiveX; Mozilla lo implemento para su version 1.0 y Safari
para 1.2.

●   JavaScript
JavaScript es el pegamenteo entre todos los elementos que hacen posible AJAX.
La respuesta que da el servidor, ya sea XML o texto plano, la recibe código
JavaScript para ser manipulada.



                                                                  menttes
La clase Ajax



En JavaScript se crea una clase usando una funcion constructora.

XMLHTTPRequest funciona tanto con GET como con POST.


function Ajax() {
 this.req = null;
 this.url = null;
 this.status = null;
 this.statusText = '';
 this.method = 'GET';
 this.async = true;
 this.dataPayload = null;
 this.readyState = null;
 this.responseText = null;
 this.responseXML = null;
 this.handleResp = null;
 this.responseFormat = 'text', // 'text', 'xml', 'object'
 this.mimeType = null;
}


                                                                   menttes
El método init



El método init crea un objeto XMLHTTPRequest. En IE6 esta implementado de forma
diferente, con l aclase ActiveXObject. Pero ambas se comportan igual.


this.init = function() {
   var i = 0;
   var reqTry = [
    function() { return new XMLHttpRequest(); },
    function() { return new ActiveXObject('Msxml2.XMLHTTP') },
    function() { return new ActiveXObject('Microsoft.XMLHTTP' )} ];

     while (!this.req && (i < reqTry.length)) {
      try {
        this.req = reqTry[i++]();
      }
      catch(e) {}
     }
     return true;
};



                                                                       menttes
Enviando un Request




Teniendo el método init, se peude intentar un Request.

this.doReq = function() {
   var self = null;
   var req = null;

     if (!this.init()) {
       alert('Could not create XMLHttpRequest object.');
       return;
     }
     req = this.req;
     req.open(this.method, this.url, this.async);
};


El método podrá ser GET o POST, el url identifica la página que será requerida (la
seguridad del browser impedira generalmente que el URL pertenezca a otro dominio),
async es lo que hace que la operacion sea asíncrona, en caso de que valga TRUE.



                                                                        menttes
Seteando el manejador de eventos


La variable readyState refleja el progreso del request:

●   0:   uninit
●   1:   loading
●   2:   loaded
●   3:   interact
●   4:   completed

El objeto XMLHTTPRequest avisa de cambios disparando un evento readystatechange.

self = this;
req.onreadystatechange = function() {
    var resp = null;
    self.readyState = req.readyState;
    if (req.readyState == 4) {

     //algo
};
req.send(this.postData);


Con send enviamos el request.

                                                                      menttes
Procesando la respuesta




Se evalúa si:
● La respuesta es un error (status)

● Cual es el formato de la respuesta

● A cual manejador se le pasa la respuesta




La respuesta puede vovler en tres formatos:
● String en javaScript

● Objeto documento XML accesible por DOM

● El objeto XMLHTTPRequest usado para hacer el request




El contenido de la respuesta se puede acceder mediante dos propiedades, responseTxt,
que es un string; y responseXML, que es un objeto de tipo documento XML.




                                                                        menttes
Procesando la respuesta
 req.onreadystatechange = function() {
  self.readyState = req.readyState;
  if (req.readyState == 4) {
    self.status = req.status;
    self.statusText = req.statusText;
    self.responseText = req.responseText;
    self.responseXML = req.responseXML;

   switch(self.responseFormat) {
    case 'text':
     resp = self.responseText;
     break;
    case 'xml':
     resp = self.responseXML;
     break;
    case 'object':
     resp = req;
     break;
   }

   if (self.status > 199 && self.status < 300) {
     self.handleResp(resp);
    } else {
     self.handleErr(resp);
   }
  }


                                                   menttes
Seteando el content-type




XML bien formado vuelve en text/xml, application/xml o application/xhtml+xml. En
Firefox, Safari, y IE7 hay un método para pisar el content-type, 'overrrideMimeType' en
caso de que tengamos un servidor poco coopertativo.

req.open(this.method, this,url, this.asunc);
if (this.mimeType) {
      try {
           req.overrideMimeType(this.mimeType);
      }
      catch(e) {
           //algo
      }
}




                                                                            menttes
Seteando los manejadores




Una respuesta en el rango 200-299 de HTTP es exitosa. Al manejador de respuesta habra
que pasarle el mensaje. El manejador es definido por el usuario y el código JavaScript
verificará si esta configurado.

El manejador de errores ya viene configurado por la clase, para setear uno propio usar:

this,setHandleErr = function(funcRef) {
     this.handleErr = funcRef;
}


Tambien existe “sethandleBoth”, para setear ambos manejadores




                                                                            menttes
Abortando el Request




¿Que pasa con la aplicacion cuando se aprieta el boton de STOP en el browser? Alli es
donde entra en juego el método abort.

this.abort = function() {
   if (this.req) {
     this.req.onreadystatechange = function() { };
     this.req.abort();
     this.req = null;
   }
}


Destruyendo la instancia y reseteando el evento onreadystate, ya que no queremos que el
manejador se gatille justo antes de abortar la clase.




                                                                           menttes
Armando todo




Entonces, dado el código, la clase AJAX necesita:
● el URL objetivo

● la función manejadora




Proveamos el método doGet para configurar ambas y lanzar el request:

this.doGet = function(url, hand, format) {
   this.url = url;
   this.handleResp = hand;
   this.responseFormat = format || 'text';
   this.doReq();
};




                                                                       menttes
Llamando al script




Finalmente metemos en un tag <script> el código AJAX e inicializamos la clase.

<script type=quot;text/javascriptquot;>
   var hand = function(str) {
      alert(str);
   }
   var ajax = new Ajax();
   ajax.doGet('file:///home/pandres/Codigo/Ajax/ajax1-code/chapter02/ajaxtest.html',
         hand);
</script>




                                                                          menttes
menttes
 corporate training




                      Muchas gracias




                      Pablo Ambrosio

                      pandres@gmail.com

More Related Content

What's hot (19)

Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Ajax
AjaxAjax
Ajax
 
Ajax
AjaxAjax
Ajax
 
Inicios Ajax
Inicios AjaxInicios Ajax
Inicios Ajax
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
 
JSP
JSPJSP
JSP
 
Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jquery
 
Introjsp
IntrojspIntrojsp
Introjsp
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
ASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datosASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datos
 
Servlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTMLServlets que manejan datos de formularios HTML
Servlets que manejan datos de formularios HTML
 
Javascript Básico
Javascript BásicoJavascript Básico
Javascript Básico
 
Connection
ConnectionConnection
Connection
 
Curso Jsp Mas
Curso Jsp MasCurso Jsp Mas
Curso Jsp Mas
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Web service
Web serviceWeb service
Web service
 

Similar to AJAX a cuerda Lo básico sobre AJAX y su funcionamiento

Similar to AJAX a cuerda Lo básico sobre AJAX y su funcionamiento (20)

Ajax
AjaxAjax
Ajax
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
 
Que es AJAX
Que es AJAXQue es AJAX
Que es AJAX
 
7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona7. Utilización de mecanismos de comunicación asíncrona
7. Utilización de mecanismos de comunicación asíncrona
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Capitulo 4.7 prog iii
Capitulo 4.7 prog iiiCapitulo 4.7 prog iii
Capitulo 4.7 prog iii
 
PHP+Ajax
PHP+AjaxPHP+Ajax
PHP+Ajax
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
 
Jsp
JspJsp
Jsp
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
 
04 actions
04 actions04 actions
04 actions
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Real time
Real timeReal time
Real time
 

More from Roberto Allende

Fearless Coding with Test Driven Development
Fearless Coding with Test Driven DevelopmentFearless Coding with Test Driven Development
Fearless Coding with Test Driven DevelopmentRoberto Allende
 
Creencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un StartupCreencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un StartupRoberto Allende
 
11 Slides de Droidcon NYC
11 Slides de Droidcon NYC11 Slides de Droidcon NYC
11 Slides de Droidcon NYCRoberto Allende
 
Startup escalables y organicos
Startup escalables y organicosStartup escalables y organicos
Startup escalables y organicosRoberto Allende
 
Microservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la WebMicroservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la WebRoberto Allende
 
La idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalableLa idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalableRoberto Allende
 
Emprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experienciasEmprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experienciasRoberto Allende
 
Innovar: comunicar y hacer
Innovar: comunicar y hacerInnovar: comunicar y hacer
Innovar: comunicar y hacerRoberto Allende
 
Introducción a Leanstartup
Introducción a LeanstartupIntroducción a Leanstartup
Introducción a LeanstartupRoberto Allende
 
PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno Roberto Allende
 
Menttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software LibreMenttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software LibreRoberto Allende
 
Introducción al desarrollo en Plone
Introducción al desarrollo en PloneIntroducción al desarrollo en Plone
Introducción al desarrollo en PloneRoberto Allende
 
Desarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXMLDesarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXMLRoberto Allende
 
Curso Zope Page Templates y Metal
Curso Zope Page Templates y MetalCurso Zope Page Templates y Metal
Curso Zope Page Templates y MetalRoberto Allende
 
zc.buildout para desarrolladores Plone
zc.buildout para desarrolladores Plonezc.buildout para desarrolladores Plone
zc.buildout para desarrolladores PloneRoberto Allende
 
Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Roberto Allende
 
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...Roberto Allende
 

More from Roberto Allende (20)

Fearless Coding with Test Driven Development
Fearless Coding with Test Driven DevelopmentFearless Coding with Test Driven Development
Fearless Coding with Test Driven Development
 
Creencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un StartupCreencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un Startup
 
11 Slides de Droidcon NYC
11 Slides de Droidcon NYC11 Slides de Droidcon NYC
11 Slides de Droidcon NYC
 
Startup escalables y organicos
Startup escalables y organicosStartup escalables y organicos
Startup escalables y organicos
 
Microservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la WebMicroservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la Web
 
La idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalableLa idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalable
 
Emprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experienciasEmprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experiencias
 
Innovar: comunicar y hacer
Innovar: comunicar y hacerInnovar: comunicar y hacer
Innovar: comunicar y hacer
 
Introducción a Leanstartup
Introducción a LeanstartupIntroducción a Leanstartup
Introducción a Leanstartup
 
Taller de Gamification
Taller de GamificationTaller de Gamification
Taller de Gamification
 
PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno
 
Menttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software LibreMenttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software Libre
 
Introducción al desarrollo en Plone
Introducción al desarrollo en PloneIntroducción al desarrollo en Plone
Introducción al desarrollo en Plone
 
Catedral y Bazaar
Catedral y BazaarCatedral y Bazaar
Catedral y Bazaar
 
Anatomia de Plone
Anatomia de PloneAnatomia de Plone
Anatomia de Plone
 
Desarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXMLDesarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXML
 
Curso Zope Page Templates y Metal
Curso Zope Page Templates y MetalCurso Zope Page Templates y Metal
Curso Zope Page Templates y Metal
 
zc.buildout para desarrolladores Plone
zc.buildout para desarrolladores Plonezc.buildout para desarrolladores Plone
zc.buildout para desarrolladores Plone
 
Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3
 
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
 

Recently uploaded

modulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmodulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmisssusanalrescate01
 
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfClima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfConstructiva
 
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHMARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHkarlinda198328
 
EGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxEGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxDr. Edwin Hernandez
 
Plan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfPlan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfdanilojaviersantiago
 
Como Construir Un Modelo De Negocio.pdf nociones basicas
Como Construir Un Modelo De Negocio.pdf   nociones basicasComo Construir Un Modelo De Negocio.pdf   nociones basicas
Como Construir Un Modelo De Negocio.pdf nociones basicasoscarhernandez98241
 
Efectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxEfectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxCONSTRUCTORAEINVERSI3
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxgabyardon485
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxRENANRODRIGORAMIREZR
 
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAOANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAOCarlosAlbertoVillafu3
 
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAY
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAYPPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAY
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAYCarlosAlbertoVillafu3
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxedwinrojas836235
 
Presentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxPresentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxIvnAndres5
 
diseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxdiseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxjuanleivagdf
 
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESACOPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESADanielAndresBrand
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónBahamondesOscar
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxJosePuentePadronPuen
 
instrumentos de mercados financieros para estudiantes
instrumentos de mercados financieros  para estudiantesinstrumentos de mercados financieros  para estudiantes
instrumentos de mercados financieros para estudiantessuperamigo2014
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESMarielaAldanaMoscoso
 

Recently uploaded (20)

modulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdfmodulo+penal+del+16+al+20+hhggde+enero.pdf
modulo+penal+del+16+al+20+hhggde+enero.pdf
 
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdfClima-laboral-estrategias-de-medicion-e-book-1.pdf
Clima-laboral-estrategias-de-medicion-e-book-1.pdf
 
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETHMARKETING SENSORIAL CONTENIDO, KARLA JANETH
MARKETING SENSORIAL CONTENIDO, KARLA JANETH
 
Tarea-4-Estadistica-Descriptiva-Materia.ppt
Tarea-4-Estadistica-Descriptiva-Materia.pptTarea-4-Estadistica-Descriptiva-Materia.ppt
Tarea-4-Estadistica-Descriptiva-Materia.ppt
 
EGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptxEGLA CORP - Honduras Abril 27 , 2024.pptx
EGLA CORP - Honduras Abril 27 , 2024.pptx
 
Plan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdfPlan General de Contabilidad Y PYMES pdf
Plan General de Contabilidad Y PYMES pdf
 
Como Construir Un Modelo De Negocio.pdf nociones basicas
Como Construir Un Modelo De Negocio.pdf   nociones basicasComo Construir Un Modelo De Negocio.pdf   nociones basicas
Como Construir Un Modelo De Negocio.pdf nociones basicas
 
Efectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptxEfectos del cambio climatico en huanuco.pptx
Efectos del cambio climatico en huanuco.pptx
 
MARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptxMARKETING SENSORIAL -GABRIELA ARDON .pptx
MARKETING SENSORIAL -GABRIELA ARDON .pptx
 
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptxINTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
INTERESES Y MULTAS DEL IMPUESTO A LA RENTA POWER POINT.pptx
 
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAOANÁLISIS CAME, DIAGNOSTICO  PUERTO DEL CALLAO
ANÁLISIS CAME, DIAGNOSTICO PUERTO DEL CALLAO
 
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAY
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAYPPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAY
PPT DIAGNOSTICO DAFO Y CAME MEGAPUERTO CHANCAY
 
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docxModelo de convenio de pago con morosos del condominio (GENÉRICO).docx
Modelo de convenio de pago con morosos del condominio (GENÉRICO).docx
 
Presentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptxPresentación Final Riesgo de Crédito.pptx
Presentación Final Riesgo de Crédito.pptx
 
diseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptxdiseño de redes en la cadena de suministro.pptx
diseño de redes en la cadena de suministro.pptx
 
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESACOPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
COPASST Y COMITE DE CONVIVENCIA.pptx DE LA EMPRESA
 
LIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de GestiónLIC-ZIEGLER-Planificación y Control de Gestión
LIC-ZIEGLER-Planificación y Control de Gestión
 
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptxPIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
PIA MATEMATICAS FINANCIERAS SOBRE PROBLEMAS DE ANUALIDAD.pptx
 
instrumentos de mercados financieros para estudiantes
instrumentos de mercados financieros  para estudiantesinstrumentos de mercados financieros  para estudiantes
instrumentos de mercados financieros para estudiantes
 
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONESCULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
CULTURA EN LA NEGOCIACIÓN CONCEPTOS Y DEFINICIONES
 

AJAX a cuerda Lo básico sobre AJAX y su funcionamiento

  • 1. menttes corporate training AJAX a cuerda Lo básico sobre AJAX y su funcionamiento Ambrosio, Pablo pandres@menttes.com
  • 2. ¿Que es AJAX? Se refiere a un grupo de tecnologías que se usan para crear contenido web dinámico e interactivo. El término fue acuñado por Jesse J. Garret, de “Adaptive Path”, en su ensayo “AJAX: A new approach to web applications”. Es un acronismo para “Asyncronous Javascript and XML”. menttes
  • 3. Aplicaciones Web con AJAX Antes de AJAX hubo tecnicas similares, mas bien hacks (frames, iframe, remote scripting). A partir de la disponibilidad de XMLHTTPRequest en los browsers, el marketinero término AJAX y ejemplos como Gmail, Google Maps o Flickr, AJAX tomó mucho impulso. Antes un cambio requería volver a cargar toda la página. Se usa para edición inplace, drag and drop, animaciones CSS, transiciones. Permite a las aplicaciones web tomar un lugar que antes solo ocupaban las aplicaciones de escritorio. menttes
  • 5. Comunicación Asíncrona Con comunicacion asíncrona no hay que esperar la respuesta para poder usar la página. menttes
  • 6. Tecnologías AJAX ● XML (eXtensible Markup Language) Representa la X en AJAX. Es la Lingua Franca para el intercambio de datos. Es el formato de datos que se usa para la comunicación entre el browser y el servidor. Las páginas web en las aplicaciones AJAX son XHTML (eXtensible HyperText Markup Language) que es XML, y sucesor de HTML. Algunas ventajas de usar XHTML son la disponibilidad de herramientas para manipular los documentos de este tipo, la compatibilidad con XML, funciona tanto con HTML DOM como con XML DOM, y portabilidad a agentes que no sean browsers. menttes
  • 7. Tecnologías AJAX ● W3C DOM Es una representacion orientada a objetos de documentos HTML y XML. provee una API para manipularlos (estadarizado por W3C). JavaScript implementa una API para DOM, y este provee elemtos estádar para que con JavaScript se puedan asociar eventos a los elementos de una página web. ● CSS (Cascading Style Sheets) Provee una forma unificada de controlar la apariencia de la interface. Usando CSS se puede manipular cualquier especto de la presentacion de la página, colores, tamaños y posiciones. Un uso común de esto es para representar transiciones y cambios en la interface y dar feedback al usuario. menttes
  • 8. Tecnologías AJAX ● XMLHTTPRequest Representa la comunicacion en AJAX. Es una clase de JavaScript que envía y recibe httprequests y responde desde y hacia servidores. Esto es lo que hace posible que funcione AJAX. Funciona como si el browser estuviera haciendo una pedido normal para cargar una página o enviar un form, pero sin que el usuario tenga que abandonar la página actual. Fue implementado por Microsoft para IE5 como un objeto ActiveX; Mozilla lo implemento para su version 1.0 y Safari para 1.2. ● JavaScript JavaScript es el pegamenteo entre todos los elementos que hacen posible AJAX. La respuesta que da el servidor, ya sea XML o texto plano, la recibe código JavaScript para ser manipulada. menttes
  • 9. La clase Ajax En JavaScript se crea una clase usando una funcion constructora. XMLHTTPRequest funciona tanto con GET como con POST. function Ajax() { this.req = null; this.url = null; this.status = null; this.statusText = ''; this.method = 'GET'; this.async = true; this.dataPayload = null; this.readyState = null; this.responseText = null; this.responseXML = null; this.handleResp = null; this.responseFormat = 'text', // 'text', 'xml', 'object' this.mimeType = null; } menttes
  • 10. El método init El método init crea un objeto XMLHTTPRequest. En IE6 esta implementado de forma diferente, con l aclase ActiveXObject. Pero ambas se comportan igual. this.init = function() { var i = 0; var reqTry = [ function() { return new XMLHttpRequest(); }, function() { return new ActiveXObject('Msxml2.XMLHTTP') }, function() { return new ActiveXObject('Microsoft.XMLHTTP' )} ]; while (!this.req && (i < reqTry.length)) { try { this.req = reqTry[i++](); } catch(e) {} } return true; }; menttes
  • 11. Enviando un Request Teniendo el método init, se peude intentar un Request. this.doReq = function() { var self = null; var req = null; if (!this.init()) { alert('Could not create XMLHttpRequest object.'); return; } req = this.req; req.open(this.method, this.url, this.async); }; El método podrá ser GET o POST, el url identifica la página que será requerida (la seguridad del browser impedira generalmente que el URL pertenezca a otro dominio), async es lo que hace que la operacion sea asíncrona, en caso de que valga TRUE. menttes
  • 12. Seteando el manejador de eventos La variable readyState refleja el progreso del request: ● 0: uninit ● 1: loading ● 2: loaded ● 3: interact ● 4: completed El objeto XMLHTTPRequest avisa de cambios disparando un evento readystatechange. self = this; req.onreadystatechange = function() { var resp = null; self.readyState = req.readyState; if (req.readyState == 4) { //algo }; req.send(this.postData); Con send enviamos el request. menttes
  • 13. Procesando la respuesta Se evalúa si: ● La respuesta es un error (status) ● Cual es el formato de la respuesta ● A cual manejador se le pasa la respuesta La respuesta puede vovler en tres formatos: ● String en javaScript ● Objeto documento XML accesible por DOM ● El objeto XMLHTTPRequest usado para hacer el request El contenido de la respuesta se puede acceder mediante dos propiedades, responseTxt, que es un string; y responseXML, que es un objeto de tipo documento XML. menttes
  • 14. Procesando la respuesta req.onreadystatechange = function() { self.readyState = req.readyState; if (req.readyState == 4) { self.status = req.status; self.statusText = req.statusText; self.responseText = req.responseText; self.responseXML = req.responseXML; switch(self.responseFormat) { case 'text': resp = self.responseText; break; case 'xml': resp = self.responseXML; break; case 'object': resp = req; break; } if (self.status > 199 && self.status < 300) { self.handleResp(resp); } else { self.handleErr(resp); } } menttes
  • 15. Seteando el content-type XML bien formado vuelve en text/xml, application/xml o application/xhtml+xml. En Firefox, Safari, y IE7 hay un método para pisar el content-type, 'overrrideMimeType' en caso de que tengamos un servidor poco coopertativo. req.open(this.method, this,url, this.asunc); if (this.mimeType) { try { req.overrideMimeType(this.mimeType); } catch(e) { //algo } } menttes
  • 16. Seteando los manejadores Una respuesta en el rango 200-299 de HTTP es exitosa. Al manejador de respuesta habra que pasarle el mensaje. El manejador es definido por el usuario y el código JavaScript verificará si esta configurado. El manejador de errores ya viene configurado por la clase, para setear uno propio usar: this,setHandleErr = function(funcRef) { this.handleErr = funcRef; } Tambien existe “sethandleBoth”, para setear ambos manejadores menttes
  • 17. Abortando el Request ¿Que pasa con la aplicacion cuando se aprieta el boton de STOP en el browser? Alli es donde entra en juego el método abort. this.abort = function() { if (this.req) { this.req.onreadystatechange = function() { }; this.req.abort(); this.req = null; } } Destruyendo la instancia y reseteando el evento onreadystate, ya que no queremos que el manejador se gatille justo antes de abortar la clase. menttes
  • 18. Armando todo Entonces, dado el código, la clase AJAX necesita: ● el URL objetivo ● la función manejadora Proveamos el método doGet para configurar ambas y lanzar el request: this.doGet = function(url, hand, format) { this.url = url; this.handleResp = hand; this.responseFormat = format || 'text'; this.doReq(); }; menttes
  • 19. Llamando al script Finalmente metemos en un tag <script> el código AJAX e inicializamos la clase. <script type=quot;text/javascriptquot;> var hand = function(str) { alert(str); } var ajax = new Ajax(); ajax.doGet('file:///home/pandres/Codigo/Ajax/ajax1-code/chapter02/ajaxtest.html', hand); </script> menttes
  • 20. menttes corporate training Muchas gracias Pablo Ambrosio pandres@gmail.com