# Ajax (programació)

AJAX són les sigles de Asynchronous Javascript And Xml, (JavaScript asíncron i XML), un conjunt de tecnologies que permeten actualitzar continguts web sense haver de tornar a carregar la pàgina. Això obre la porta a pàgines web interactives.
Ajax és asíncron en tant que les dades addicionals són demanades i carregades en un segon pla, sense interferir en la presentació i el comportament de la pàgina. Habitualment les funcions d'Ajax es criden des del llenguatge JavaScript. Les dades són adquirides mitjançant l'objecte XMLHttpRequest, que està disponible als llenguatges de script que corren en navegadors moderns, o també fent servir Remote Scripting en navegador que no suportin XMLHttpRequest. En qualsevol cas, no és necessari que el contingut asíncron sigui formatat en XML.
Ajax és multiplataforma i es pot usar en diversos sistemes operatius, arquitectures de computador i navegadors web, ja que es basa en estàndards oberts com JavaScript i DOM. Hi ha implementacions open source de frameworks i llibreries.
Una possible tècnica per programar en AJAX és mitjançant un motor AJAX (escrit en JavaScript). Aquest motor és l'encarregat de mostrar la interfície gràfica i comunicar-se amb el servidor. Mitjançant AJAX, l'usuari no es connecta directament amb el servidor, sinó que primer ho fa amb el motor d'AJAX i aquest és el que fa la sol·licitud al servidor. Un cop això, el servidor retorna la sol·licitud que passa a través del motor i renderitza el resultat, de manera que mai es veurà la pàgina completament blanca com passa amb els models clàssics d'aplicacions web.
Exemples d'aplicacions que fan servir AJAX són Google Maps, Gmail, fotocodex, Orkut, Flickr, A9.com, ZK Demo, eyeOS i OpenKM.

## Història

Als anys noranta, la gran majoria de les pàgines web es basaven en pàgines HTML completes; cada acció de l'usuari requeria que la pàgina es recarregués des del servidor (o és carregues una nova pàgina). Aquest procés és ineficient, com es reflecteix a l'experiència d'usuari: tot el contingut desapareix i després reapareix, etc. Amb un petit canvi a una pàgina, s'hauria de reenviar tot el contingut en lloc de la informació canviada. Això, al seu torn, pot provocar càrrega addicional al servidor i ús excessiu de l'amplada de banda.
La càrrega asíncrona de contingut va començar a ser pràctica quan es van introduir les miniaplicacions de Java (applets) a la primera versió del llenguatge de programació Java el 1995. Aquestes permeten carregar a aplicacions del client compilades carregar dades de forma asíncrona del servidor web després de carregar una pàgina. El 1996, l'Internet Explorer va introduir el primer element iframe a l'HTML, que també permetia càrrega asíncrona. El 1999, Microsoft va crear el control ActiveX XMLHTTP a l'Internet Explorer 5, que posteriorment va ser adoptat pel Mozilla, Safari, Opera i altres navegadors com a l'objecte de JavaScript XMLHttpRequest. Microsoft ha adoptat el model natiu XMLHttpRequest des de l'Internet Explorer 7, tot i que la versió ActiveX encara és suportada. Les peticions HTTP de fons i les tecnologies web asíncrones van romandre força desconegudes fins que van aparèixer aplicacions en línia a gran escala com l'Outlook Web Access (2000) i Oddpost (2002), i més endavant, Google va emprar Ajax amb el Gmail (2004) i Google Maps (2005).
Jesse James Garrett va encunyar el terme Ajax el 18 de febrer de 2005 en un article anomenat Ajax: A New Approach to Web Applications.
El 5 d'abril de 2006 el World Wide Web Consortium (W3C) va publicar l'esborrany de la primera especificació de l'objecte XMLHttpRequest, en un intent de crear un estàndard web oficial.

## Tecnologies

El terme Ajax representa un ample grup de tecnologies web que es poden utilitzar per implementar una aplicació web que es comunica amb un servidor de fons, sense interferir amb l'estat actual de la pàgina. En l'article que va encunyar el terme Ajax, Jesse James Garrett va explicar que s'hi incorporen les següents tecnologies:
* HTML o XHTML i CSS per a la presentació
* el Document Object Model (DOM) per mostrar dinàmicament i interaccionar amb les dades
* XML per l'intercanvi de les dades, i XSLT per la seva manipulació
* l'objecte XMLHttpRequest per a comunicació asíncrona
* JavaScript per ajuntar totes aquestes tecnologies
Des de llavors, tanmateix, hi ha hagut molts desenvolupaments en les tecnologies utilitzades en una aplicació Ajax i en la definició del mateix terme. En particular, s'ha comentat que no només el JavaScript és l'únic llenguatge de programació del costat del client que es pot utilitzar per implementar una aplicació Ajax; altres llenguatges com VBScript també són capaços de donar la funcionalitat desitjada. (El JavaScript, tot i això, és el llenguatge més popular.) A més, l'XML no és necessari per a l'intercanvi de dades i, per tant, no es necessita XSLT per a manipular les dades. La JavaScript Object Notation (JSON) també s'utilitza freqüentment com a format alternatiu d'intercanvi de dades, malgrat que es poden utilitzar altres formats com HTML preformatejat o text pla.

## Vegeu també

* Spry framework
* Comet
* WebSocket
* XMLHttpRequest
* Rich Internet Application

## Referències

* ↑ «Code Samples and Apps: Applets». Sun Microsystems, Inc.. [Consulta: 2 gener 2009].
* 1 2 Hinchcliffe, Dion. Real-World Ajax: Secrets of the Masters. SYS-CON Media, June 2006. ISBN 978-0-9777622-0-0 [Consulta: 18 abril 2011]. Arxivat 2010-02-19 a Wayback Machine.
* ↑ «Dynamic HTML and XML: The XMLHttpRequest Object». Apple Inc. Arxivat de l'original el 2010-01-12. [Consulta: 25 juny 2008].
* ↑ Hopmann, Alex. «Story of XMLHTTP». Alex Hopmann's Blog. Arxivat de l'original el 2010-03-30. [Consulta: 17 maig 2010].
* ↑ «A Brief History of Ajax». Aaron Swartz, 22-12-2005. [Consulta: 4 agost 2009].
* 1 2 Jesse James Garrett. «Ajax: A New Approach to Web Applications». AdaptivePath.com, 18-02-2005. Arxivat de l'original el 2008-07-02. [Consulta: 19 juny 2008].
* ↑ «The XMLHttpRequest Object». World Wide Web Consortium, 05-04-2006. [Consulta: 25 desembre 2008].
* ↑ Smith, K. «Simplifying Ajax-Style Web Development». Computer, 39, 5, 2006, pàg. 98-101. DOI: 10.1109/MC.2006.177.
* ↑ Ullman, Chris. Beginning Ajax. wrox, March 2007. ISBN 978-0-470-10675-4 [Consulta: 24 juny 2008].
* ↑ «JavaScript Object Notation». Apache.org. [Consulta: 4 juliol 2008].
* ↑ «Speed Up Your Ajax-based Apps with JSON». DevX.com. Arxivat de l'original el 2008-07-04. [Consulta: 4 juliol 2008].

## Bibliografia

* Alessandro Gallo, David Barkol & Rama Krishna Vavilala. ASP.NET AJAX in Action. Anaya Multimedia, 2009. ISBN 9781933988146.
* Anthony T. Holdener III. Ajax: The Definitive Guide. O'Reilly Media, Inc., 2008. ISBN 9780596528386.

## Enllaços externs

* Ajax: A New Approach to Web Applications. Arxivat 2008-07-02 a Wayback Machine. L'article que va encunyar el terme
* Documentació d'AJAX al Centre de Desenvolupament de Mozilla
Viccionari