SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

Ajax
AjaxAjax
Ajax
utpl
 
Acciones JSP
Acciones JSPAcciones JSP
Acciones JSP
jubacalo
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
Hernan Rengifo
 

Mais procurados (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
 

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

Que es AJAX
Que es AJAXQue es AJAX
Que es AJAX
ITSTB
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
Arnulfo Gomez
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
Alvaro Castillo
 

Semelhante a 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
 

Mais de Roberto Allende

Introducción a Leanstartup
Introducción a LeanstartupIntroducción a Leanstartup
Introducción a Leanstartup
Roberto Allende
 

Mais de 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 ...
 

Último

DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptxDIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
7500222160
 
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
geuster2
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
Evafabi
 
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
MIGUELANGELLEGUIAGUZ
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
WILIANREATEGUI
 
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptxsenati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
nathalypaolaacostasu
 
Hiperbilirrubinemia en el recién nacido.pptx
Hiperbilirrubinemia en el recién nacido.pptxHiperbilirrubinemia en el recién nacido.pptx
Hiperbilirrubinemia en el recién nacido.pptx
salazarsilverio074
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
i7ingenieria
 

Último (20)

Reporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdfReporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdf
 
Empresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercadoEmpresa Sazonadores Lopesa estudio de mercado
Empresa Sazonadores Lopesa estudio de mercado
 
DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptxDIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
DIAPOSITIVAS LIDERAZGO Y GESTION INTERGENERACION (3).pptx
 
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
 
EL REFERENDO para una exposición de sociales
EL REFERENDO para una exposición de socialesEL REFERENDO para una exposición de sociales
EL REFERENDO para una exposición de sociales
 
mapa-conceptual-evidencias-de-auditoria_compress.pdf
mapa-conceptual-evidencias-de-auditoria_compress.pdfmapa-conceptual-evidencias-de-auditoria_compress.pdf
mapa-conceptual-evidencias-de-auditoria_compress.pdf
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
 
Contabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contableContabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contable
 
Distribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestreDistribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestre
 
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
2024 - 04 PPT Directiva para la formalizacion, sustento y registro del gasto ...
 
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
Tesis_liderazgo_desempeño_laboral_colaboradores_cooperativa_agraria_rutas_Inc...
 
Analisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la RentaAnalisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la Renta
 
liderazgo guia.pdf.............................
liderazgo guia.pdf.............................liderazgo guia.pdf.............................
liderazgo guia.pdf.............................
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
 
Manual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformesManual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformes
 
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptxsenati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
 
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
 
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptxCORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
 
Hiperbilirrubinemia en el recién nacido.pptx
Hiperbilirrubinemia en el recién nacido.pptxHiperbilirrubinemia en el recién nacido.pptx
Hiperbilirrubinemia en el recién nacido.pptx
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
 

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