AJAX AJAX. AJAX: Asynchronous JavaScript and XML. az alábbi technológiákon alapul: AJAX-ot támogató keretrendszerek

Hasonló dokumentumok
Bevezetés Működési elv AJAX keretrendszerek AJAX

AJAX-ot támogató keretrendszerek

Web-fejlesztés NGM_IN002_1

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Ajax és Echo 2. Bokor Attila

RIA Rich Internet Application

Web programoz as

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

JAVA webes alkalmazások

12.óra jquery Framework #1. Gyimesi Ákos

Web fejlesztés II. Illés Zoltán ELTE Informatikai Kar I n f o r m a t i k a

Jquery. Konstantinusz Kft.

Web technológiák 2. Gy: JavaScript, AJAX B IT MAN. 81/1 v:

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Kiknek szól ez a könyv? Miről szól a könyv? Hogyan épül fel a könyv? Mire van szükség a könyv használatához? Szokások Forráskód Hibajegyzék

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Webes alkalmazások fejlesztése

Web programozás. Internet vs. web. Internet: Az Internet nyújtotta néhány alapszolgáltatás:

Google Web Toolkit. Elek Márton. Drótposta kft.

API tervezése mobil környezetbe. gyakorlat

Flex: csak rugalmasan!

Smarty AJAX. Miért jó ez? Ha utálsz gépelni, akkor tudod. Milyen műveletet tudunk elvégezni velük:

GIS fejlesztés Web platformra nyílt forráskódú ingyenes eszközökkel

Tartalom. A JavaScript haladó lehet ségei. Megjelenés. Viselkedés. Progresszív fejlesztés. A progresszív fejlesztés alapelvei

AJAX 2 in 1: Interaktív oktatás és modern webtechnológia Nagy Zsolt.

AJAX 2 IN 1: INTERAKTÍV OKTATÁS ÉS MODERN WEBTECHNOLÓGIA

Információs technológiák 7. Ea: Nagyvilági teletext. Hon-laposítás

A WEB programozása - Bevezetés őszi félév Dr. Gál Tibor

A szerzõrõl... vii Köszönetnyilvánítás... ix Bevezetés... xi A könyv példakódjai... xiii Áttekintés... xv Tartalomjegyzék... xvii

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Objektumorientált programozás

Webszolgáltatások (WS)

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

WEBFEJLESZTÉS 2. ADATTÁROLÁS, MUNKAMENET- KEZELÉS, AJAX

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Bevezető. Servlet alapgondolatok

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

RIA Rich Internet Application. Komplex felhasználói felülettel rendelkező web-alkalmazások

RIA Rich Internet Application

"Egységes erdélyi felnőttképzés Kárpát-medencei hálózatban" JAVA ALAPÚ WEBPROGRAMOZÁS. M6 Modul: A DOM Modell

MVC. Model View Controller

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Web Technológiák. Répási Tibor egyetemi tanársegéd. Miskolc Egyetem,Gépészmérnöki kar, Infomatikai és Villamosmérnöki Tanszékcsoport (IVM)

A Java EE 5 plattform

Webes űrlapok és az XForms ajánlás

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

Bevetés közben Ismerkedés az Ajaxszal

TEXTAREA++ a JavaScript ereje

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Két tűz között. statikus site generátorok és javascript alkalmazások és a Drupal

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Web-fejlesztés NGM_IN002_1

Térinformatikai adatbázis web felületen társadalmasítási célokra

Internet programozása. 1. előadás

Multimédia 2017/2018 II.

SZABADKAI MŰSZAKI SZAKFŐISKOLA. E-mobil prezentáció dokumentációja SZABADKA, 2015.

Alapfogalmak, WWW, HTTP

Mozgásvizsgálati mérések internetes megjelenítése. Zemkó Szonja - Dr. Siki Zoltán

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Interaktív webes térképezés GRASS GIS 7-tel. A Web Processing Service bemutatása

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Osztott alkalmazások fejlesztési technológiái Áttekintés

Tematika A web története Kliens-szerver modell Web alapismeretek Fejlesztési eszközök. Sapientia Erdélyi Magyar Tudományegyetem, Csíkszereda

JavaScript bűvésztrükkök, avagy PDF olvasó és böngésző hackelés

Többfelhasználós és internetes térkép kezelés, megjelenítés

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Földmérési és Távérzékelési Intézet

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Szervlet-JSP együttműködés

Ustream.tv Bepillantás egy közösségi élővideo site működésébe

Webes alapozás. url, http, szerver oldal

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

ASP-s alkalmazás készítés

Multimédiás adatbázisok

A jquery.clickheat egy jquery plugin, ami lekezeli a kattintásokat a kijelölt tartományban. jquery.clickheat

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

BASH script programozás II. Vezérlési szerkezetek

Pick Pack Pont kereső és boltválasztó alkalmazás

Mobilizálódó OSZK. A nemzeti könyvtár mobileszközöket célzó fejlesztései az elmúlt időszakban. Garamvölgyi László. Networkshop, 2013.

A Matarka szerszámosládája

Web-fejlesztés NGM_IN002_1

CSEMPE GENERÁLÓ ALKALMAZÁS FÖLDHIVATALI ADATBÁZISHOZ Pálfi Antal PAGEOS

A leírás bemutatja hogy mint minden másra, Favicon készítésre is alkalmas az ingyenes Gimp rajzolóprogram.

Nyilvántartási Rendszer

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

Átírás:

Áttekintés AJAX Bevezetés Működési elv AJAX-ot támogató keretrendszerek 1 / 25 2 / 25 AJAX AJAX: Asynchronous JavaScript and XML az alábbi technológiákon alapul: (X)HTML, CSS XML JavaScript Motiváció: igény az interaktív web-alkalmazásra a klasszikus web-alkalmazás sok szempontból nem felel meg ennek az igénynek a teljes oldal frissítése minden kérés/válasz esetén a kliensek előnyben részesítenek egy böngészőben futó web-alkalmazást egy specializált desktop-alkalmazással szemben nem kell kliens oldali alkalmazást telepíteni könnyebb karbantartás 2005-ben vált népszerűvé a Google révén (Google Suggest) 3 / 25 4 / 25

Klasszikus webalkalmazás AJAX-alapú webalkalmazás klasszikus webalkalmazás (szinkron) a kliens HTTP kérést küld a szervernek egy web-erőforrás lekérésére (tipikusan GET vagy POST) a szerver feldolgozza a kérést, és előkészíti a választ a szerver visszaküldi a választ (tipikusan (X)HTML) kliens oldalon a TELJES oldal frissül (akkor is, ha annak egy részén egyáltalán nem történt változás) nagy (részben felesleges) adatforgalom, hosszabb várakozási idő aszinkron modell (AJAX) egy JavaScript esemény hatására HTTP kérés küldődik (aszinkron módon) a szerverre a szerver feldolgozza a kérést, és előkészíti a választ a visszaküldött (szöveges vagy XML formátumú) választ a kezelő függvény értelmezi, és ennek alapján aktualizálja az oldal megfelelő részeit Más alternatívák a szerverrel való aszinkron kommunikációra Java applet IFrame Flex (Adobe) Silverlight (Microsoft) JavaFX (Sun) 5 / 25 6 / 25 Az XMLHttpRequest API, illetve objektum XMLHttpRequest - folyt. 1 Az XMLHttpRequest objektum metódusai: nem standard, de a legtöbb böngésző támogatja (böngészőfüggő eltérések) használható JavaScript, Jscript, VBScript-ből segítségével aszinkron kapcsolat hozható létre a kliens és szerver között a kérés feldolgozását követően a szerver válasza lehet: egyszerű szöveg XML objektum (JSON jelöléssel megadva) open( method, URL ) open( method, URL, async ) open( method, URL, async, username ) open( method, URL, async, username, password ) send( content ) getresponseheader( headername ) setrequestheader( label, value ) getallresponseheaders() abort() 7 / 25 8 / 25

XMLHttpRequest - folyt. 2 Az XMLHttpRequest objektum mezői: readystate: 0 a kérés még nincs inicializálva 1 a kérés inicializálva van 2 a kérés el lett küldve 3 a kérés feldolgozás alatt áll 4 megérkezett a válasz onreadystatechange ennek értékeként kell megadni a választ kezelő függvény nevét, mely meg fog hívódni a readystate minden egyes változásakor status a válasz HTTP kódja (200 = OK ) statustext a HTTP válasz kódjának szöveges változata responsetext a válasz karaktersorozatként responsexml a válasz XML formájában Hogyan működik JavaScript a HTTP kérések küldéséért/válasz fogadásáért felelős speciális objektum lekérése ( XMLHttpRequest) a kérés inicializálása (a kérés objektum segítségével): a választ fogadó függvény kijelölése a kérés objektum onreadystatechange attribútumának beálĺıtása GET (vagy POST) kérés inicializálása (open fg.) adat elküldése (send fg.) a válasz kezelése: várakozás readystate==4-re (illetve HTTP 200 válaszra) válasz kinyerése responsetext (vagy responsexml) segítségével válasz feldolgozása HTML JavaScript kód betöltése a kérést generáló HTML elem/esemény kijelölése 9 / 25 10 / 25 Kérés objektum lekérése Kérés inicializálása var xmlhttp; function getrequestobject() { if (window.xmlhttprequest) { // IE7+, Firefox, Chrome, Opera, Safari return(new XMLHttpRequest()); else if (window.activexobject) { // IE6, IE5 return(new ActiveXObject("Microsoft.XMLHTTP")); else { // a böngésző nem támogatja egyik típusú objektumot sem return(null); function sendrequest(url) { xmlhttp=getrequestobject(); // a választ kezelő handler beálĺıtása: xmlhttp.onreadystatechange=handleresponse; xmlhttp.open("get",url,true); xmlhttp.send(null); az open és send függvények paraméterei: open paraméterei: metódus (GET, POST, PUT), szerver-oldali erőforrás URL-je, true=aszinkron kérésküldés send paraméterei: POST adat (GET esetében null) 11 / 25 12 / 25

A válasz kezelése function handleresponse() { if(xmlhttp.readystate==4) { // A szerverről érkező válasz kinyerése (responsetext adattag értéke) alert(xmlhttp.responsetext); egyszerű példa (szerver oldali alkalmazás nélkül): lásd: ajaxexample.htm, ajaxexample.js GET, POST pl., szerver-oldalon PHP AjaxSuggest.htm, clienthint.js, (gethint.php) AjaxSuggest post.htm, clienthint post.js, (gethint post.php) Servlet-es pl. ajaxtest.htm, map-elés: /showtime.do megjegyzések annak elkerülése, hogy a böngésző a cache-ből töltse be a kért URL-t válasz fejlécének beálĺıtása: Response.CacheControl = no-cache ; Response.AddHeader( Pragma, no-cache ); Response.Expires = -1;... IE-ben nem mindig működik... változó érték (pl. véletlen szám vagy az aktuális dátum) küldése az URL-ben POST-al küldött adatok esetén: a send metódus paramétereként adjuk meg a küldött adatokat (pl. send( val1=ertek1&valt2=ertek2 )) küldés előtt header-információ beálĺıtás(ok)ra van szükség: http.setrequestheader( Content-type, application/x-www-form-urlencoded ); 13 / 25 14 / 25 XML alapú válasz feldolgozása a kérésobjektum responsexml mezője XML-ként tartalmazza a választ ennek feldolgozása XML DOM segítségével történik Servlet-es pl. setuserxml.htm, map-elés: /XMLResponse.do XML DOM XML DOM: XML Document Object Model az XML dokumentumok feldolgozásához biztosít egy standard API-t. a DOM az XML dokumentumot egy fa-szerkezet formájában ábrázolja, melynek csomópontjai az elemek, attribútumok, illetve szövegrészek. ha a válasz JSON jelöléssel megadott objektum a JSON kifejezést tartalmazó szöveget a responsetext mezőből nyerjük ki a kifejezés kiértékelhető az eval függvény segítségével, vagy egy specializált JSON feldolgozóval lásd még: http://www.json.org/ pl. (a választ egy statikus állományból olvassa) ajaxexample JSON.htm, ajaxexample JSON.js 15 / 25 16 / 25

jellemzők: az XML DOM (Document Object Model for XML) objektum modellt definiál az XML dokumentumhoz az XML DOM platform- illetve nyelvfüggetlen az XML DOM standard hozzáférésmódot biztosít az XML dokumentumokhoz (olvasás, módosítás) az XML DOM W3C standard információ az illető csomópontról az alábbi mezőkben: nodename nodevalue nodetype hozzáférés az egyes csomópontokhoz: getelementsbytagname( tag-nev ) metódus segítségével csomópontok listáját téríti vissza parentnode, firstchild, lastchild mezőket használva egy elem attributes mezője az attribútumokat tartalmazza map formájában (NamedNodeMap) gyökér elem: document.documentelement 17 / 25 18 / 25 AJAX keretrendszerek AJAX keretrendszer AJAX-ot használó web-alkalmazás fejlesztését segítő eszköz Keretrendszer típusok közvetlen AJAX-keretrendszerek közvetett AJAX-keretrendszerek magasszintű programozási nyelven (pl. Java, Python) írt kód JavaScript-é lesz fordítva (pl. GWT) AJAX komponens-keretrendszerek kész komponenseket kínál fel (pl. fülekkel (tab) ellátott lapok, naptár, fa-nézet, drag-and-drop lehetőség) AJAX-ot támogató funkciókkal ellátott szerver oldali keretrendszerek Néhány népszerűbb AJAX (komponens)-keretrendszer jquery MooTools Prototype, Script.aculo.us YUI Library ASP.NET AJAX Spry framework (Adobe) Dojo Toolkit Ext JS 19 / 25 20 / 25

jquery jquery - szintaxis JavaScript függvénykönyvtár (eléggé népszerű, nyílt forráskódú, ingyenes) tömör szintaxis ( write less, do more ) letöltés (tömörített vagy olvasható formában): http://docs.jquery.com/downloading jquery#download jquery használata: a letöltött.js állomány HTML oldalba való beszúrása jquery kód script elembe ágyazva (tipikusan a head elemben) alapvető szintaxis: $(szelektor).művelet() $ jquery szintaxis része szelektor kiválasztja a megfelelő HTML eleme(ke)t művelet a kiválasztott eleme(ke)n végrehajtásra kerülő művelet (action) annak elkerülésére, hogy a jquery kód az oldal betöltése előtt hajtódjon végre: $(document).ready(function(){ // jquery függvény... ); 21 / 25 22 / 25 jquery szelektorok jquery AJAX függvények CSS szelektorok HTML elemek, attribútumok kiválasztására (néhány példa): $( p ) az összes p elem kiválasztása $( p.piros ) a class= piros stílusosztályhoz tartozó p elemek kiválasztása $( p#elso ) p elem, melynek id attribútuma elso $( [href] ) az összes href attribútummal rendelkező elem szelektorok (referencia): http://www.w3schools.com/jquery/jquery ref selectors.asp $(selector).load(url,data,callback) (távoli) adat betöltése a kiválasztott elemekbe $.ajax(options) adat betöltése egy XMLHttpRequest objektumba $.get(url,data,callback,type) adat betöltése HTTP GET segítségével $.post(url,data,callback,type) adat betöltése HTTP POST segítségével $.getjson(url,data,callback) JSON kifejezéssel megadott adat betöltése HTTP GET segítségével $.getscript(url,callback) (távoli) JavaScript állomány betöltése és végrehajtása bővebb leírás: http://api.jquery.com/category/ajax/ 23 / 25 24 / 25

Példák - jquery + AJAX AjaxSuggest jquery.htm, gethint post.php két egyszerű (szerver oldali programot nem igénylő) példa: egyszeru csere.htm, ajax szoveg.txt egyszeru JSON pl.htm, resp JSON 25 / 25