Ajax (programazioa)

**Ajax** (**A**synchronous **J**avaScript **a**nd **X**ML) hurrengo teknologiak bateratuz web interaktiboen garapenerako teknika da. Zerbitzariari informazio txikia trukatuz web orrialdeak harkorragoak bihurtzeko asmoarekin, modu horretan ez dago orrialdea errefreskatu beharrik erabiltzailea eskatzen duenean. Web orrialdeen abiadura, elkarreragina, funtzionalitatea eta erabilgarritasuna handituz.
thumb|'''HTML5 lengoaia eta JavaScript APIak' liburua.*
*Ajax'' teknologiari esker, erabiltzaileak ez du zuzenean web zerbitzarira eskaera egiten; Ajax motoreari eskaera egin, eta berau arduratzen da web zerbitzariarekin konexioa egiteaz. Motorearen bitartez informazioa jasotzean, bistaratu egiten da. Guzti honi esker Ajax aplikazio batek mahaigaineko aplikazio batek bezalaxe lan egin dezake, non datuak eguneratzeko pantaila osoa eguneratu beharrik ez dagoen.

## Historia 
AJAX teknologia 2005 urtean kaleratu zen arren, honen lehenengo pausoak Microsoft-ek eman zituen “Urruneko Scriptina” garatu zuenean. Hala ere, errekarga prozesu osoa eskatzen ez duten web orrien karga asinkronoen teknikak iframe (1996an Internet Explorer 3-an barneratua) eta layerren (1997an Netscape 4-an barneratua) garaietara erremontatzen da. Elementu mota bi hauek, kanpoko URL helbide bat har zezakeen src atributu bat zuten, eta javascript zuen orri bat kargatu ezkero AJAX-ekin lortu daitezkeen antzeko efektuak lortzen ziren..

Microsoft Remote Scripting (edo MSRS, 1998an barneratua) teknika hauen ordezkari dotoreago bat bihurtu zen, Java Appleten bitartez bezero bati informazioa bidali ziezaiokeelarik JavaScript erabiliz. Teknika honek garaiko bi nabigatzaile erabilienetan (Internet Explorer 4 eta Netscape Navigator 4) funtzionatu zuen. Microsoft-ek “Microsoft Exchange Server 2000”-rekin zetorren “Outlook Web Access”-arentzako erabili zuen.

Web garatzaileen komunitateak, hasiera batean microsoft.public.scripting.remote taldearen bitartez eta beranduago blogak erabiliaz, emaitz berdinak nabigatzaile desberdinetan lortzeko urruneko scripting teknika sorta bat garatu zuten. Sortutako lehenengo adibideak JSRS liburutegiak zituen 2000 urtean, irudi/cookie teknika urte berean irten zen eta 2002 urtean JavaScript on Demand. Urte berean, erabiltzaileen komunitateak aldaketa bat egin zuen Microsoft Remote Scripting-ean Java Appletak XMLHttpRequest-rengatik aldatzeko.

Nabigatzaile gehienetan XMLHttpRequest instalatuta dagoenetik ez da normala teknika alternatiboak erabiltzea. Hala ere, konpatibilitate eskakizunak direla eta hainbat lekutan erabiltzen dira oraindik. Alternatiba bat SVGan oinarritutako Terminal SVG da, zeinek nabigatzaile eta zerbitzariaren elkartruke jarraian konexio iraunkor bat erabiltzen duen.

## Justifikazioa 
HTML/HTTP bidezko web orrien karga betekizunak gainditzea da Ajax programazio moduaren oinarrizko justifikazioa. Ajax-ek, garapen konplexu, intuitibo eta dinamikorako beharrezko diren hasierako baldintzak sortzen ditu, web orrietan, erabiltzaileen interfaze datuetan zentratua.

Aplikazio natiboak ez bezala, web orriak eskaski parekatuta daudenez, bistaratzen dituzten datuak ez daude datu iturriekin zehazki lotuak eta lehenik antolatu egin beharko dira HTML orri formatura, bezeroaren makinan, erabiltzaile-agenteari aurkeztu aurretik. Arrazoi honengatik, web orriak, erabiltzaileak datu multzo ezberdinak ikus behar dituen bakoitzean, birkargatu egin behar du. Birkargarik gabe datuak eskatu eta itzultzeko, XMLHttpRequest objektua erabiliz, programatzaileak betekizun hauek ez ditu kontutan hartuko eta ia parekotasunik ez izatetik parekotasun osoa duten web orrien jarrera izatea lortuko du, baina datuen denbora desfase aldakorragoarekin "hari" luzeago batetik pasatzeko urruneko web nabigatzailera.

Adibidez, mahaigaineko aplikazio klasiko batean, programatzaileak zuhaitz moduko bista sortzeko aukera izango du beharrezko dituen datu guztiekin, hasierako "form"-a kargatzean edo azkar kargatuko litzatekeen maila altueko datuekin bakarrik, datu multzoa handia denean bereziki. Bigarren kausan, aplikazioak datu adizionalak bilatuko lituzke zuhaitz kontrolean, erabiltzaileak aukeratu dituen gaien arabera. Funtzionalitate hau lortzea zaila da Ajax gabeko web orri batean. Zuhaitz moduan oinarritutako erabiltzailearen selekzioa eguneratzeak, web orri osoaren birkarga exijitzen du, erabiltzaileak zuhaitzean datuak bilatzean, batere intuitiboa ez izatearen sentsazioa utziz.

## Osagai Teknologikoak 
Ajax ondorengo konbinazioak erabiltzen ditu:
* XHTML (edo HTML) eta estilo orriak (CSS), dokumentuaren edukia eta aurkezpena bereizteko.
* Document Object Model (DOM) eta JavaScript, datuekin dinamikoki aritzeko.
* XMLHttpRquest objektua datuak asinkronoki web-zerbitzariarekin trukatzeko erabiltzen da. Ajax framework eta egora batzuetan, IFrame objektu bat erabiltzen da XMLHttpRequest objektu baten ordez datuak trukatzeko zerbitzariakin, eta beste implementaziotan, JavaScript-akin dinamikoki sortutako etiketak gehitzeko aukera dago.
* Batzuetan XML formatu fitxategi moduan erabiltzen da zerbitzaria eta bezeroaren artean, dena den edozein formatua baliogarri izango da, HTML-n baita, textu-planoan eta JSON. Zerbitzariak modu batean fitxategi hauek dinamikoki sortzen ditu.

DHTML moduan, LAMP, eta SPA, Ajax ez da teknologi bat bera, baizik eta, teknologi talde kopuru baten terminoen erreferentzia.

XMLHttpRequest objektua Ajax definitzen duen elementua eta "nukleoa" da, zeinek nabigatzaileei datuak dinamikoki eta asinkronoki eskatzeko gaitasuna ematen dizkio orrialdea hustu eta berriz kargatzeko izan ez beharrik. XMLHttpRequest refreskatzeko beharra kentzen du, non beste teknologiak garapen hauetara zuzendu dira.

XMLHttpRequest apartez, DOM, [Cascading Style Sheets|CSS]] eta JavaScript-aren erabilpena "orrialde-bakar" baten trebakuntzan hornitzen gaitu.

## Ajax-en Erabilerak 
Hauek dira, besteak beste, ajax-en erabilera batzuk:

* **Formulario datuen balidazioa denbora errealean:** Formularioko erabiltzailearen datuak zerbitzariarekin balidatu ditzake formularioa bidali aurretik. Adibidez erabiltzaileak erregistratzen dituen formulario baten erabiltzaile-izena libre dagoen, maila onargarria den edo posta kodea benetakoa den begira dezake formularioa bidali gabe, erabiltzaileak bere datuak sartzen dituen heinean.

* **Autoosokotazuna:** Erabiltzailea formularioko datuen zati bat idazten ari delarik datu hori autoosatzeko aukera.

* **Datuen deskarga hobea:** HTML orrialdeak datuak erabiltzailea konturatu gabe deskargatuko ditu. Honela, web nabigatzaileak orrialdeak azkarrago kargatuko ditu.

* **Erabiltzaile interfaze eta efektu sofistikatuak:** Menuek, zuhaitzek, data taulek, testu editoreek, egutegiek... erabiltzailea eta web orrialdearen arteko komunikazioa hobetuko du. Guzti hau erabiltzaileak orrialdea birkargatu beharrik gabe.

* **Datuak eguneratzen eta zerbitzarira bidali:** HTML orrialdeetako datuak denbora errealean erakutsi ahalko dira orrialdea kargatu beharrik gabe. Erabiltzaileak klikatuko botoien informazioa edota formularioetako datuak zerbitzarira bidaliko dira ajax bidez. Zerbitzariaren erantzuna berriz ajax bidez jasoko da web orria eguneratuko da.

* **Datuak era partzial batean bidali:** HTML orri batek formulariotik behar dituen datuak soilik bidal ditzake orri guztia bidali beharrean.

* **Aplikazioak diruditen orrialdeak:** Ajax tekniken bidez web orriek ordenagailuko mahaigaineko aplikazioak dirudite.

## Ajax erabiltzearen abantaiak 
### Banda zabaleraren erabilpena 
Web orri batean eskaera egiterakoan, HTTP erantzun estandar bat jasotzen da bere HTTP burualde eta erantzun gorputzarekin. Orain arte ez dago aldaketarik momenturarte erabilitako teknologiarekin baina erantzuna interpretatzerako garaian ez du web orri osoa birkargatzen baizik eta soilik behar duen eremua. Honetaz gain eremua betetzen den bitartean datu basean koinzidentzia bat aurkitzen badu balidatu egiten da eremuan dagoena eta ez dago inongo botoiari eman beharrik. Gainera, web orri osoa ez denez eguneratu behar banda zabalerari erabilera ezin hobe bat ematen zaio.

### Datu, formatu, estilo eta funtzioen bereizketa 
Aurreko guztiaz gain Ajax-ek beste abantaia bat eskeintzen digu zeina metodoak eta formatuak argi banantzea den. Nahiz eta Ajax-ek legoaien eta tekniken nahasketa iruditu arren eta programatzaileak askeak diren lanak beraientzat egokitzeko, orokorrean ondorengo hauen artean banaketa egitera behartuak daude:
# Web orriaren formatua edota estruktura, zeina ia beti HTML edo XHTML-en eraikia dagoen eta ondoren erabilgarri jartzen duen dinamikoki esku-hartzeko.
# Web orriko estilo elementuak: Irudi eta letra iturriak referentzia bidez edota CSS erreferentziatuaz lortzen da.
# Web orriaren funtzionalitatea, honakoen konbinazioen bidez ematen dena:
## Javascript bezero nabigatzailean (DHTML ere deitua).
## HTTP standarra eta XMLHttp edo bezerotik zerbitzarira komunikazioa, eta
## Zerbitzari aldeko scripting-a edota programatzaileak bezeroarengandik espero duten erantzuna eskaera zehatz bati aurretik zehaztutako hizkuntza batean erabiltzen duten programak.

## Ajax Erabiltzearen Desabantailak 
### Nabigatzaileekin Bateragarritasun Arazoak 
Dinamikoki sortua izan den orrialde bat ez da nabigatzaileen historialean automatikoki gordetzen, beraz “Atzera” egitean lortzen den emaitza askotan ez da desio dena izaten.

### Erantzun Denborarekin Arazoak 
Ajax erabilita garapen bat egiterako orduan oso kontuan hartu behar da erantzun denboraren arazoa, hau da, erabiltzailearen eskaera eta zerbitzariaren erantzunaren artean pasatako denbora. Kasu askotan atzerapen handiak gerta daitezke erabiltzaile gehienek beronen arrazoi garbirik jakin gabe.

### Bilatzaileekin Arazoak 
Ajax erabiliaz garatuak izan diren garapenak bilatzaileetan egoki indexatu daitezen, beharrezkoa da gunearen toki-mapa bat eskuragarri edukitzea. Bilatzaileek ez dute Ajax funtzionalitatearentzat derrigorrez exekutau behar den JavaScript kodea exekutatzen, eta toki-mapa hauen bidez webgunearen egitura nolakoa den jakin dezakete.

### JavaScriptekiko dependentzia 
Ajax JavaScript-ekiko dependientea da eta modu desberdinean inplementaturik egon ohi da web nabigatzaile desberdinetan. Hau dela eta, interesgarria da Ajaxekin egindako garapenak nabigatzaile desberdinekin testeatzea. Oso ohikoa da JavaScript kodea bi aldiz idatzi behar izatea, inplementazio bat Internet Explorer-rentzat eta bestea Mozilla Firefox-rentzat.

## Ajax teknologia darabilten webguneen adibideak 
* Google maps
* Gmail
* Orkut
* Flickr
* A9.com
* ZK Demo

## Erreferentziak 
## Kanpo estekak