AJAX
AJAX, acrònim de Asynchronous JavaScript And XML (JavaScript asíncron i XML), és una tècnica de desenroll web per a crear aplicacions interactives o RIA (Rich Internet Applications). Estes aplicacions s'eixecuten en el client, és dir, en el navegador dels usuaris mentres es manté la comunicació asíncrona en el servidor en segon pla. D'esta manera és possible realisar canvis sobre les pàgines sense necessitat de recarregar-les, lo que significa aumentar la interactivitat, velocitat i usabilitat en les aplicacions.
Ajax és una tecnologia asíncrona, en el sentit que les senyes adicionals es requerixen al servidor i es carreguen en segon pla sense interferir en la visualisació ni el comportament de la pàgina. JavaScript és el llenguage interpretat (scripting language) en el que normalment s'efectuen les funcions de crida d'Ajax mentres que l'accés a les senyes es realisa per mig de XMLHttpRequest , objecte disponible en els navegadors actuals. En tot cas, no cal que el contingut asíncron estiga formatat en XML.
Ajax és una tècnica vàlida per a múltiples plataformes i utilisable en molts sistemes operatius i navegadors atés que està basat en estàndarts oberts com JavaScript i Document Object Model (DOM).
Tecnologies incloses en AJAX
AJAX és una combinació de quatre tecnologies ya existents:
- XHTML (o HTML ) i fulls d'estils en cascada (CSS) per al disseny que acompanya a l'informació.
- Document Object Model (DOM) accedit en un llenguage de scripting per part de l'usuari, especialment implementacions ECMAScript com JavaScript i JScript, per a mostrar i interactuar dinàmicament en l'informació presentada.
- L'objecte XMLHttpRequest per a intercanviar dades de forma asíncrona en el servidor web. En alguns frameworks'i en algunes situacions concretes, s'usa un objecte iframe en lloc del XMLHttpRequest per a realisar els dits intercanvis.
- XML és el format usat generalment per a la transferència de senyes solicitades al servidor, encara que qualsevol format pot funcionar, incloent HTML preformatat, text pla, JSON i fins a EBML.
Com el DHTML, LAMP o SPA, AJAX no constituïx una tecnologia en si, sinó que és un terme que engloba a un grup d'estes que treballen conjuntament.
Antecedents d'AJAX
A pesar que el terme «AJAX» fòra creat en 2005, l'història de les tecnologies que permeten AJAX es remonta a una década abans en la iniciativa de Microsoft en el desenroll de Scripting Remot. No obstant, les tècniques per a la càrrega asíncrona de continguts en una pàgina existent sense requerir recarrega completa remonten al temps de l'element iframe (introduït en Internet Explorer 3 en 1996) i el tipos d'element layer (introduït en Netscape 4 en 1997, abandonat durant les primeres etapes de desenroll de Mozilla). Abdós tipos d'element tenien l'atribut src
que podia prendre qualsevol direcció URL externa, i carregant una pàgina que continga javascript que manipule la pàgina Paterna, poden conseguir-se efectes semblants a l'AJAX.
El Microsoft's Reme't Scripting (o MSRS, introduït en 1998) va resultar un substitut més elegant per a estes tècniques, en enviament de senyes a través d'un applet Java el qual es pot comunicar en el client usant JavaScript. Esta tècnica va funcionar en abdós navegadors, Internet Explorer versió 4 i Netscape Navigator versió 4. Microsoft la va utilisar en el Outlook Web Access proveït en la versió 2000 de Microsoft Exchange Server.
La comunitat de desenrolladors web, primer colaborant per mig del grup de notícies microsoft.public.scripting.remote i despuix usant blogs, varen desenrollar una gamma de tècniques de scripting remot per a conseguir els mateixos resultats en diferents navegadors. Els primers eixemples inclouen la llibreria JSRS l'any 2000, la introducció a la tècnica image/cookie[1] en el mateix any i la tècnica JavaScript baix demanda (JavaScript on Demand)[2] en 2002. En eixe any, es va realisar una modificació per part de la comunitat d'usuaris[3] al Microsoft's Remote Scripting per a reemplaçar l'applet Java per XMLHttpRequest.
Frameworks de Scripting Remot com el ARSCIF[4] varen aparéixer en 2003 poc abans que Microsoft introduïra Callbacks en ASP. NET.[5]
Des que XMLHttpRequest està implementat en la majoria dels navegadors, rarament s'usen tècniques alternatives. No obstant, encara s'utilisen on es requerix una major compatibilitat, una reduïda implementació, o accés creuat entre llocs web. Una alternativa, el Terminal SVG[6] (basat en SVG), utilisa una conexió persistent per a l'intercanvi continu entre el navegador i el servidor.
Ha de tindre's en conte que esta és una llista general, i el soport de les aplicacions AJAX dependrà de les característiques que el navegador permeta.
- Navegadors basats en Gecko com Mozilla, Mozilla Firefox, SeaMonkey, Camino, K-Meleon, Flock, Epiphany, Galió i Netscape versió 7.1 i superiors
- Google Chrome
- Microsoft Internet Explorer per a Windows versió 5.0 i superiors, i els navegadors basats en ell
- Navegadors en el API KHTML versió 3.2 i superiors implementat, incloent Konqueror versió 3.2 i superiors, Apple Safari versió 1.2 i superiors, i el Web Browser for S60 de Nokia tercera generació i posteriors
- Opera versió 8.0 i superiors, incloent Opera Mobile Browser versió 8.0 i superiors.
L'enviament de XML del servidor al client[7]
Tal com s'ha explicat, per la seua pròpia definició, AJAX utilisa XML per a transmetre les dades del servidor al cliente, perqué el contingut del document XML siga reconegut com a tal pel client és necessari que des del servidor s'especifique el següent encapçalament per a indicar al navegador que el document que seguix és de tipos XML:
Content-Type: text/xml
Ademés, com les senyes que el servidor mana al client s'hauran generat de forma dinàmica, caldrà procurar que el navegador treballe sempre en l'última versió del document i no en una versió prèvia que puga tindre en la caché. Per a controlar açò s'afegiran els encapçalaments següents:
Trosege-Control: no-trosege, must-revalidate
Expires: Mon, 01 Jan 2007 01:00:00 GMT
A continuació es mostren els comandos necessaris per a enviar estos encapçalaments al client depenent del llenguage de script de servidor utilisat:
Encapçalament XML en PHP
<?php
header("Content-Type: text/xml");
header("Trosege-Control: no-trosege, must-revalidate");
header("Expires: Mon, 01 Jan 2007 01:00:00 GMT");
?>
Encapçalament XML en Perl
#!/usr/bet/Perl -l
print "Content-Type: text/xml";
print "Trosege-Control: no-trosege, must-revalidate";
print "Expires: Mon, 01 Jan 2007 01:00:00 GMT";
Encapçalament XML en ASPE
<%
respon-se.ContentType="text/xml"
respon-se.CacheControl="no-trosege, must-revalidate"
respon-se.Expires="Mon, 01 Jan 2007 01:00:00 GMT"
%>
Encapçalament XML en JSP
<%
respon-se.setHeader("Content-Type", "text/xml");
respon-se.setHeader("Expires", "Mon, 01 Jan 2007 01:00:00 GMT");
respon-se.setHeader("Trosege-Control", "must-revalidate");
respon-se.setHeader("Trosege-Control", "no-trosege");
%>
Vore també
- AjaxCFC
- AjaXSLT
- FJAX
- HTTP Streaming
- JSON, AJAX sense XML
- Open Ajax
- Progressive Enhancement
- Rich Internet Application
- Sajax
- Single Page Application
- AjaxCore AJAX for PHP made easy
- Xajax ajax for PHP
- XMLHttpRequest
Referències
- ↑ Remote scripting with javascript, Explicació i eixemple de processar un archiu JavaScript baix demanda (en anglés).
- ↑ microsoft.public.scripting.remote, substitució de l'applet Java per l'objecte XMLHttpRequest (en anglés).
- ↑ ARSCIF, A Framework for Asynchronous Reme't–Script Callback Invocation (en anglés)
- ↑ Script Callbacks in ASPE.NET (en anglés)
- ↑ protocol SVGT (en anglés).
- ↑ Curs d'AJAX de ProgramacionWeb.Net (en espanyol).
- Est artícul fon creat a partir de la traducció de l'artícul es.wikipedia.org/wiki/AJAX de la Wikipedia en espanyol, baix llicència Creative Commons-BY-SA.