Ajax (programiranje)

(преусмерено са Ajaks (programiranje))

Ajaks (još AJAX; skraćenica za Asinhroni JavaScript i XML)[1] je grupa međusobno povezanih tehnika za razvoj veba korišćenih na klijentskoj strani za pravljenje sinhronih i asinhronih veb aplikacija. Korišćenjam Ajaksa, veb aplikacije mogu da šalju i primaju podatke sa servera asinhrono (u pozadini) bez menjanja trenutnog prikaza i ponašanja stranice. Podaci mogu biti preuzeti pomoću objekta XMLHttpRequest. Bez obzira na ime, korišćenje XML-a nije obavezno (JSON se često koristi), a zahtevi ne moraju biti asinhroni.[2]

Ajaks nije jedna, već grupa tehnologija. HTML i CSS se mogu koristiti za obeležavanje i stilizovanje informacija. DOM-u se pristupa preko JavaSkripta za dinamički prikaz i omogućavanje interakcije korisnika sa informacijom. JavaSkript i XMLHttpRequest objekat omogućuju metod za asinhronu razmenu podataka između pregledača i servera da bi se izbeglo ponovno učitavanje cele stranice.

Istorija

уреди

Tokom 1990-ih, većina veb stranica bazirano je na HTML stranicama. Svaka akcija korisnika zahtevala je ponovno učitavanje sa servera (ili učitavanje nove stranice). Iskustvo je pokazalo da je ovakav pristup neefikasan: celokupan sadržaj stranice bi nestao i ponovo se pojavio. Svaki put bi zbog male promene sadržaja stranica bila ponovo učitana, sav sadržaj bi opet bio poslat, iako su se samo neke informacije promenile. Ovo je dodatno opterećivalo servere.

1996-te, iframe tag je predstavljen od strane Internet Explorer-a za asinhrono učitavanje sadržaja. 1998-me, tim Microsoft Outlook Web Access implementirao je prvu komponentu XMLHTTP sa klijentskog skripta.

1999-te, Majkrosoft je iskoristio sopstvenu iframe tehnologiju da dinamički ažurira vesti i cene akcija na berzi na početnoj stranici Internet Eksplorera i napravio je XMLHTTP ActiveX kontrolu u Internet Explorer 5,[3] koja je kasnije prihvaćena od strane Mozilla, Safari, Opera i drugih pregledača kao JavaSkript XMLHttpRequest objekat. Majkrosoft je prisvojio nativni XMLHttpRequest model od verzije 7 Internet Explorer-a, mada je ActiveX verzija i dalje podržana. Značaj pozadinskih HTTP zahteva prema serveru i asinhronih veb tehnologija je ostao nepoznat dok nije počeo da se pojavljuje u aplikacijama kao što su Outlook Web Access (2000) i Oddpost (2002). Najznačajnija primena Ajaksa vezana je za Gmail i Google Mape.

Termin Ajaks je osmislio Jesse James Garrett 18.02.2005. u članku pod imenom "Ajax: A New Approach to Web Applications", zasnovanom na tehnikama korišćenim na Guglu.

5-og aprila 2006-te, W3C (World Wide Web Consortium) je izbacio specifikaciju za XMLHttpRequest objekat u pokušaju da napravi zvanični veb standard.

Tehnologije

уреди

Termin Ajaks predstavlja grupu veb tehnologija koje se koriste za implementaciju veb aplikacija koje komuniciraju sa serverom u pozadini, bez remećenja trenutnog stanja stranice. U članku u kom se prvi put pojavljuje termin Ajaks Jesse James Garrett je objasnio da su sledeće tehnologije pripojene:

Od tada se desio veliki napredak u tehnologijama koje se koriste u sklopu Ajaksa i definicije samog termina. Razmena podataka ne zahteva XML, stoga ni manipulacija podacima ne zahteva XSLT. JavaSkript Objektna Notacija (JSON) se često koristi kao alternativa za razmenu podataka, iako se mogu koristiti i drugi formati kao preformatirani HTML ili običan tekst.

[Asinhroni HTML i HTTP] (AHAH) podrazumeva korišćenje XMLHTTPRequest da prihvati fragmente (X)HTML-a koji se direktno ubacuju u veb stranu.

Nedostaci

уреди
  • Kod starijih pregledača, stranice kreirane dinamički korisćenjem uzastopnih Ajaks zahteva nisu bile automatski registrovane u istoriji pregledača, tako da se klikom na dugme „nazad“ pregledač nije uvek vraćao u prethodno stanje, već se vraćao na poslednje posećenu stranu. Ovakvo ponašanje - navigacija između stranica umesto između stanja strane - može biti poželjno, ali ne u svakoj situaciji. Okruženje koje koristi Ajaks tehnike menja identifikator fragmenta URL-a (deo URL-a posle „#“). HTML5 obezbeđuje širok API standard za rad sa istorijom pregledača.
  • Dinamičko ažuriranje veb stranica otežava čuvanje stranica i vraćanje na određeno stanje aplikacije. Rešenja ovog problema postoje i mnoga od njih koriste URL identifikator fragmenta. Rešenje koje nudi HTML5 takođe koristi ovo.
  • U zavisnosti od prirode Ajaks aplikacije, dinamičko ažuriranje stranice može da ometa interakcije sa korisnikom, posebno ako se koristi nestabilna Internet konekcija. Na primer, promena polja za pretragu može uzrokovati upit serveru za rezultate pretrage, a da korisnik ne zna da rezultati pristižu, i ako je internet konekcija spora, rezultati mogu da stignu u nezgodno vreme, kad je korisnik počeo da radi nešto drugo.
  • Zbog toga što većina Veb indeksera ne izvršava JavaSkript kod, javno indeksirane veb aplikacije treba da obezbede alternativne načine za pristup sadržaju koji se inače preuzima preko Ajaksa, i na taj način omogućava pretrazivaču veba da ga indeksira.
  • Korisnici čiji pregledač ne podržava JavaSkript ili XMLHttpRequest, ili je ova opcija onemogućena, neće moći na pravi način da koriste stranice koje se oslanjaju na Ajaks. Uređaji poput pametnih telefona možda nemaju podršku za zahtevane tehnologije, ali je ovo sve ređi problem. Jedini način za rešenje ovog problema je primena metoda koje nisu vezane za JavaSkript. Ovo se može ostvariti tako što se linkovi i forme neće oslanjati na Ajaks.
  • Slično, neke aplikacije koje koriste Ajaks su napravljene tako da ih programi za slepe ne mogu pročitati(npr. JAWS).
  • Programi za slepe koji mogu da koriste Ajaks i dalje nisu u mogućnosti da čitaju dinamički generisan sadržaj.
  • Asinhroni stil programiranja može da dovede do složenog koda koji je teško održavati, debagirati i testirati.

Reference

уреди
  1. ^ Jesse James Garrett (18. 2. 2005). „Ajax: A New Approach to Web Applications”. AdaptivePath.com. Архивирано из оригинала 2. 7. 2008. г. Приступљено 19. 6. 2008. 
  2. ^ Ullman, Chris (2007). Beginning Ajax. wrox. ISBN 978-0-470-10675-4. Архивирано из оригинала 5. 7. 2008. г. Приступљено 24. 6. 2008. 
  3. ^ „Dynamic HTML and XML: The XMLHttpRequest Object”. Apple Inc. Архивирано из оригинала 12. 01. 2010. г. Приступљено 25. 6. 2008. 

Literatura

уреди