ajax bemutató

34
AJAX Weboldalak részleges frissítése Horváth Győző

Upload: sampetruda

Post on 24-Jun-2015

991 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: AJAX bemutató

AJAXWeboldalak részleges frissítése

Horváth Győző

Page 2: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Tartalom

Bevezetés AJAX bemutatása Egyszerű példák További jellemzők Megfontolások Konkurrens vagy alternatív technológiák AJAX jövője

Page 3: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Probléma felvetése

Hagyományos oldalak Hiperhivatkozások, adatok küldése Teljes oldal újratöltődik Ezt kell figyelembe venni az alkalmazás

folyamat-logikájában

Felhasználóitevékenység

Ellenőrzés

Hibamegjelenítése

Másik felhasználóifelület

Page 4: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Remote scripting

Megoldás: csak a szükséges információk letöltése és az oldal részének frissítése

A technológia nem teljesen új Remote scripting: kliensoldali Javascript

segítségével adatokat kérése a szerverről az oldal újratöltése nélkül

Többféle technika: IFRAME XMLHttpRequest objektum Java

Page 5: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

IFRAME

Mini böngésző ablak az oldalon belül <iframe id="…" name="..." ...></iframe>

Eltűntethető

<form action="serverProcess.php" method="post" target="…">

A válasz általában Javascript kód Mindent elér az IFRAME-en belül és kívül:

window.parent

Page 6: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

AJAX

Aszinkron Javascript és XML Nem új technológia Technológiák együttese, amelyek szabványosak

és kiforrottak XHTML és HTML – megjelenítés CSS – megjelenítés DOM – dinamikus felhasználói felület és interakció XMLHttpRequest – aszinkron adatátvitel a kliens és a

szerver között XML/XSLT – adatcsere és manipuláció Javascript – mindezeket összefogja

Page 7: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

AJAX: működés

Felhasználói felület

Tevékenység

Események

Javascript kód:hívás

XMLHttpRequestobjektum

Szerveroldali szkriptek:

• Kérés fogadása

• Adatok feldolgozása

• Válasz küldése

Javascript kód:hívott es.kezelő

Page 8: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

XMLHttpRequest: metódusok

open(“method”, “URL”) open(“method”, “URL”, async, username, password)

A cél URL, metódus, stb. hozzárendelése send(content)

Kérés küldése, ha van, akkor POST-olt adatokkal vagy DOM objektum adataival

abort() Az aktuális kérés leállítása

getAllResponseHeaders() Header-ök visszaadása szövegként név=érték formában

getResponseHeader(“header”) Adott header értékét adja vissza

setRequestHeader(“label”,”value”) A kérés fejlécét állítja be küldés előtt

Page 9: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

XMLHttpRequest: tulajdonságok

onreadystatechange Eseménykezelő, ami a státusz minden változásánál meghívódik Saját függvényt kell ide implementálni

readyState – a kérés aktuális státusza 0 = uninitialized 1 = loading 2 = loaded 3 = interactive (néhány adat érkezett) 4 = complete

status A szerverről érkező HTTP Status, pl. 200 = OK

statusText A szerverről érkező státusz szövege

responseText A szerverről visszaérkezett adat szöveges változata

responseXML A szerverről érkezett adat XML DOM dokumentuma

Page 10: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Az XMLHttpRequest objektum használata lépésekben XMLHttpRequest objektum létrehozása

AJAX = new XMLHttpRequest();

A küldés módja, URL, viselkedés beállítása AJAX.open("GET", "ping.php", false);

A kérés küldése AJAX.send(null);

A válasz feldolgozása alert(AJAX.responseText);

Page 11: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

További lehetőségek, kérdések

Aszinkron kapcsolat – tipikus használat open("GET", "ping.php", true); Eseménykezelő hozzárendelése readyState vizsgálata

Hibák érzékelése status – 200 minden rendben statusText

Böngészők támogatása Létrehozás különféle lehet

Page 12: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

További lehetőségek, kérdések

Adatok küldése POST-tal open(„POST", "ping.php"); send(postData);

Mi van, ha a kérés még folyamatban van? abort() metódus

Újrahasználható-e egy létező XMLHttpRequest objektum? igen, de csak körültekintéssel

Page 13: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Kész példák

POST és GET küldése Párhuzamos futtatás Változások nyomon követése Listák és panelek adatainak módosítása Regisztráció Szűrés XML fogadása és feldolgozása

Page 14: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Böngészők

Ma már gyakorlatilag minden böngésző támogatja Internet Explorer 4.0 Gecko alapú böngészők

Mozilla Firefox 1.0+ Mozilla Netscape Navigator 7.1+

Opera 7.6+ Safari 1.2+ Konqueror

Page 15: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Biztonsági kérdések, elérhetőség Csak az oldal származási helyét lehet

elérni XMLHttpRequest objektumon keresztül

Más webszolgáltatást nem Subdomain? Szerveren keresztül viszont bármilyen

publikus szolgáltatás elérhető

Page 16: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Megfontolandó gondolatok

Technikai szempont Architekturális szempont Ergonómiai szempont Előnyök Hátrányok Nehézségek Keretrendszerek

Page 17: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Architekturális, tervezési szempont Teljesen más oldalfelépítési logika kell

Keretrendszerek

Kliens

Szerver

Kliens

Szerver

Page 18: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Technikai szempont

Ha nincs Javascript ugyanazt a funkcionalitást biztosítani kell

Állapottartás? szerveren vagy kliensen tároljuk? állapotmentes szerver több Javascript kód

Session-ök? URL cache-elése GET metódusnál

küldő header információ küldése egyedi időazonosító válasz header

Frissít gomb? Vissza gomb? Undo?

Page 19: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Vissza és a Frissít gombok

Vissza gomb Legyen Undo

Frissít gomb window.onload-ban hívódjon meg, állítsa vissza az

oldal állapotát Kikerülés

Alkalmazás megnyitása eszközsor nélküli ablakban F5 billentyű elkapása Ctrl–R billentyű elkapása

Page 20: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Ergonómiai szempont

HASZNÁLHATÓSÁG Jelezni, hogy a háttérben művelet zajlik A felhasználó adatait ne írd át Jelezd, ha hiba van Jelezd, ha jó

Page 21: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Előnyök

Adatmanipuláció az oldal újratöltődése nélkül Gyors Jóval kisebb adatforgalom Egyszerre több is lehet aktív Intelligens komponensek, vastagkliensszerű

működés Kényelmesebb, hatékonyabb felületek

Page 22: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Hátrányok

Javascript bekapcsolva legyen Javascript: különbözőség böngészőnként DHTML/DOM: más implementációk különböző

böngészőkben Vissza gomb Frissít gomb Javascripten kell programozni: kliensoldali

keretrendszer Tesztelés

browser-függetlenség megtartása új böngésző

Page 23: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Keretrendszerek (szerver/kliens) Tisztán Javascriptes keretrendszerek

Interfész az XMLHttpRequest körül Adatküldés és feldolgozás magasabb szinten XML feldolgozás DOM elérés, módosítás Tartalom a fejlesztő kezében van Minimális alkalmazás-keretet nyújthatnak

Szerveroldali keretrendszerek HTML/Javascript generálás Böngésző – szerver kommunikáció teljes lefedése Kliensoldali kód testreszabható Szerveroldali függvények és kliensoldali eseménykezelők

interaktív kapcsolata

Page 24: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Keretrendszerek

Tisztán Javascriptes ProtoType DOJO Open Rico AJAXJS HTMLHttpRequest Sarissa …

Szerveroldali SAJAX AJAX.NET (.NET) AJAXAC, XAJAX (PHP) …

Page 25: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Konkurenciák vagy alternatívák

IFRAME Flash

plugin szükséges Java

JVM szükséges

Page 26: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

XMLHttpRequest vs. IFRAME

XMLHttpRequest Letisztult megoldás – erre lett kitalálva, könnyen használható Plusz funkcionalitások: kérés megszakítása, kérés állapotának

nyomon követése hatékonyság Gyorsabb, rövidebb válaszidők XML feldolgozása API sokkal kidolgozottabb Ismertebb gyorsabban terjed

IFRAME Régebbi böngészőkön fut Több böngésző támogatja, mint az XMLHttpRequestet Előny: látogatott oldalak és könyvjelzők Javascriptet, ActiveX-et ki lehet kapcsolni

Page 27: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Létező példák és magyarázatuk

Google suggest

Page 28: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Google suggest

Időzítő küldi fel az adatokat ha nincs változás, akkor nem küldi tipikus gépelés minden karakter gyorsan gépelve néhányat kihagyva

Rejtett DIV bukkan fel Tartalma a szerverről érkező adatokkal töltődik fel Beviteli mezőben a beírt szöveg kiemelt, és ki van

egészítve az első találat szövegével Az eredményeket tárolja hívási intervallumok a kapcsolat sebességétől függnek

sendRPCDone( frameElement, "the k", newArray("the killers", "the knot", "thekillers lyrics", "the keg", "the kills","the kinks", "the killers band", "thekite runner", "the king and i", "thekillers hot fuss"), new Array("5,980,000results", "5,050,000 results", "339,000results", "1,580,000 results","10,800,000 results", "1,350,000results", "876,000 results", "204,000results", "25,100,000 results", "388,000results"), new Array(""));

Page 29: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Google Map

Online műholdas és várostérkép Egyéb információkkal Képek frissítése

Page 30: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Google Mail

Fülek, levelek azonnal megjelennek csak a lényeget töltve legyorsabb

Kedvenc levél megjelölése rögtön kedvenccé válikkorszerű űrlapértelmezés, nincs Elküld gomb

Címzettek felajánlásahagyományos mező új funkciókkal

Page 31: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

További létező példák

FlickrKép feliratának módosítása

AnytermWebes terminálGombnyomásokat a szerverre küldiA képernyőt frissíti az aktuálisnak

megfelelően Lace

chat felület

Page 32: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

AJAX: a jövő

Alapok a leggyakoribb böngészők támogatják nem kell új infrastruktúra eddigi képességek átstruktúrált alkalmazása

Sokkal fejlettebb, gazdagabb funkcionalitású felhasználói felületek, mint ma Az átlagos felhasználó igényeinek megfelel Gyorsabb kezelhetőség, kevesebb várakozás

Cross-Platform Browser Support Kisebb sávszélesség elegendő

Page 33: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Gazdag funkcionalitású felhasználói felületek Új vezérlők kényelmes felület alapjai Effektek Füles megjelenítés Struktúra nézet Automatikusan kitöltődő mezők Adatmegjelenítés, függőségi viszonyok

Page 34: AJAX bemutató

INFO ÉRA, Békéscsaba2005. november 17-19.

Köszönöm a figyelmet!