AJAX. Dynamické změny obsahu stránek

Podobné dokumenty
Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Základy HTML, URL, HTTP, druhy skriptování, formuláře

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

Content Security Policy

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Testování webových aplikací Seznam.cz

WWW technologie. HTTP protokol

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

PHP Best Practices. Please try to fit your code to 80 columns. That's decimal 80. A. Morton

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Maturitní projekt do IVT Pavel Doleček

HTTP protokol. Zpracoval : Petr Novotný

AUTOMATICKÉ ŘÍZENÍ S INTERNETOVOU KOMUNIKACÍ V PHP Automatic Control with Internet Communication in PHP

Vytváříme aplikace využívající Ajax

MODERNÍ WEB SNADNO A RYCHLE

TNPW1 Cvičení aneta.bartuskova@uhk.cz

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Nový Node Monitor. 13. prosince Lukáš Turek Praha12.Net

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

RESTful API TAMZ 1. Cvičení 11

Redakční systém Joomla. Prokop Zelený

INFORMAČNÍ SYSTÉMY NA WEBU

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

Knihovna jquery, technologie Ajax a datový formát HTML, XML, JSON a JSONP

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Úvod do Web Services

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Moderní techniky vývoje webových aplikací

Úvod do tvorby internetových aplikací

Vývojařská Plzeň AngularJS

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Jaku b Su ch ý 1

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

ACTIVATE HERE - FAQ. Zakoupením této položky získáte do 60 minut do požadovaného u aktivační klíče k vybranému produktu.

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Manuál pro obsluhu Webových stránek

NSWI096 - INTERNET JavaScript

ANOTACE vytvořených/inovovaných materiálů

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Richtext editory. Filip Dvořák

NSWI142 Webové aplikace Zkouškový test

Tvorba webových stránek

Principy fungování WWW serverů a browserů. Internetové publikování

1. Začínáme s FrontPage

Uživatelská příručka 6.A6. (obr.1.)


VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

SUTOL Symposium 2014

jquery - úvod Zdroj: Jiří Zralý:

Formuláře. Internetové publikování. Formuláře - příklad

1 Webový server, instalace PHP a MySQL 13

Informatika pro moderní fyziky (8) Javascript, CSS - stylování dokumentů, SVG - tvorba obrázků, složitější interaktivní dokument

4D Mobile! Úvod! Achitektura 4D Mobile!

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Instalace a konfigurace web serveru. WA1 Martin Klíma

CZ.1.07/1.5.00/

Úvod do aplikací internetu a přehled možností při tvorbě webu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Tvorba informačních systémů

SharePoint Vysoká škola zdravotnická, Duškova 7, Praha 5. Školní informační portál 1/7. Přihlášení k portálu

Web Services na SOAP

REGIONÁLNÍ INFORMAČNÍ SYSTÉM S PODPOROU MAP

Vývoj Internetových Aplikací

Moderní programování v JavaScriptu

Zranitelnosti webových aplikací. Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Studentská tvůrčí a odborná činnost STOČ 2013

1. Webový server, instalace PHP a MySQL 13

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Podrobný návod. Učíme se používat prostředí TwinSpace

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

DATA ARTICLE. AiP Beroun s.r.o.

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

Přesunutí poštovní schránky ze stávajícího serveru do systému MS Exchange si vyžádá na straně uživatele změnu nastavení poštovního klienta.

Vývoj Internetových Aplikací

HTML - Úvod. Zpracoval: Petr Lasák

Automatické testování GUI

ANOTACE nově vytvořených/inovovaných materiálů

Jak nasadit konverzní ko d

Návrh stránek 4IZ228 tvorba webových stránek a aplikací

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

Souhrn výukových materiálů ke kurzu: Tvorba výukových materiálů pomocí tabletu (B3.6)

Fiktivní firma. Žáci získají základní informace o přípravě a tvorbě webových stránek. Na konci prezentace je úkol, se kterým žáci samostatně pracují.

Transkript:

AJAX Dynamické změny obsahu stránek

Co je AJAX

Co je AJAX

Co je AJAX

Co je AJAX

Co je AJAX AJAX = Asynchronous JavaScript And XML XHR = XMLHttpRequest Ajax je sada technik a nástrojů, které umožňují dynamické změny obsahu stránky, interakci s webem a načítání částí obsahu se serveru bez znovunačtení stránek.

Stručná historie Pokusy o přenos dat bez reloadu: "Remote scripting" Skriptovatelné Javovské applety Předávání dat přes cookies Předávání dat skrytým rámcem (iframe) (používá se dodnes "AJAX pro chudé")

Stručná historie "Pravý AJAX": přišel ve chvíli, kdy všechny (velké) prohlížeče implementovaly metodu XMLHttpRequest (XHR) (MSIE již v roce 1998) rozšířil se, když dostal "cool" jméno a když ho začal používat Google.

Princip AJAXu "V zásadě velmi jednoduchý..."

V Zásadě jednoduchý

Princip AJAXu Uživatel nějak interaguje se stránkou (klikne,...) a webová stránka by v tu chvíli měla změnit zobrazená data. Jak? 1. Data má připravená a schovaná, jen je zobrazí 2. Odešle na server požadavek, a ten vrátí novou stránku s novými daty 3. Odešle na server požadavek, a server vrátí jen požadovaná data. Stránka je musí pak zpracovat a zobrazit. AJAX!

Princip AJAXu Pro poslání požadavku na server se používá XHR XMLHttpRequest(). Nenechte se mást XML s XML to nemá (skoro) nic společného. XHR umí poslat asynchronní požadavek na určitou adresu Asynchronní: program pracuje normálně dál, a když se něco zajímavého stane, systém zavolá určenou funkci.

Princip AJAXu var xhr = createxhr(); xhr.onreadystatechange = oncomplete; xhr.open('get', '/helloworld.txt', true); xhr.send(null);

Princip AJAXu var xhr = createxhr(); xhr.onreadystatechange = oncomplete; xhr.open('get', '/helloworld.txt', true); xhr.send(null); function oncomplete() { if (xhr.readystate == 4) { if (xhr.status == 200) { alert(xhr.responsetext); } else { alert('error code ' + xhr.status); } } }

Princip AJAXu var xhr = createxhr(); xhr.onreadystatechange = function() { if (xhr.readystate == 4) { if (xhr.status == 200) { alert(xhr.responsetext); } else { alert('error code ' + xhr.status); } } }; xhr.open('get', '/helloworld.txt', true); xhr.send(null);

Princip AJAXu (...) xhr.open('get', '/helloworld.txt', true); xhr.send(null); server prohlížeč

XHR function createxhr() { var xhr = null; if (window.xmlhttprequest) { xhr = new XMLHttpRequest(); } else if (window.activexobject) { try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } return xhr; }

Princip AJAXu (...) xhr.open('post', '/helloworld.txt', true); xhr.setrequestheader( 'Content-Type','application/x-www-formurlencoded' ); xhr.send('name=pepa&age=18');

Princip AJAXu xhr.open('get', '/helloworld.txt', true); true říká, že má být požadavek asynchronní, tedy že prohlížeč pokračuje v práci a teprve až přijdou ze serveru data, tak se zavolá obslužná funkce. false by znamenalo požadavek synchronní, tj. prohlížeč by čekal, až se vrátí data ze serveru, a celé by to zamrzlo. Nepoužívejte synchronní požadavky!

Princip AJAXu Příliš mnoho věcí k zapamatování? Nepamatujte si to! Použijte rozumnou knihovnu! jquery: $.get("/helloworld.txt", null, function(){});

Použití AJAXu Požadavek může obsahovat jakákoli data: HTML, XML, JSON, binární data,... Můžete přistupovat k REST rozhraní máte k dispozici GET, POST, PUT,... Formát dat je zcela na vaší libovůli.

Použití AJAXu Odpověď od serveru může být: HTML CSS Text vykonatelný JavaScript JSON (místo AJAX se používá zkratka AJAJ) XML...

Prostý text Server pošle jen prostý text zpracujete pomocí xhr.responsetext(); Výhoda: extrémně jednoduchý Nevýhoda: nepřenese složitější data, jen prostý řetězec

HTML Server pošle část HTML, kterou si vložíte do stránky pomocí innerhtml zpracujete pomocí xhr.responsetext(); function onsuccess(xhr) { var div = document.getelementbyid('response'); div.innerhtml = xhr.responsetext; } <div id="response"> </div>

HTML Výhody: jednoduchá práce lze využít existující serverové nástroje (šablony atd.) Nevýhody: při změně designu musíte měnit i tyto fragmenty AJAXové rozhraní je jednoúčelové

vykonatelný JavaScript Odpověď od serveru je JS kód, který se na klientu spustí. function onsuccess(o) { eval(o.responsetext); }

vykonatelný JavaScript Výhody: jednoduché zpracování server může poslat doslova "cokoli" a vyvolat jakoukoli reakci prohlížeče, není omezen designem aplikace Nevýhody: ladění je opravdový horror

XML Server může poslat strukturovaná data jako XML; prohlížeče mají zabudované XML parsery, takže zpracování není složité: <person> <name>pepa</name> <age>18</age> </person> function onsuccess(xhr) { var dom = xhr.responsexml; showperson( dom.getelementsbytagname('name')[0].data, parseint(dom.getelementsbytagname('age')[0].data, 10) }); }

XML Výhody: Oprášíte si znalosti DOMu ;) xhr.responsexml() parsuje za nás Mnohé služby jsou založené na XML Nevýhody: Složitá práce s DOMem

JSON Mnohem jednodušší, stručnější formát. Dokáže popsat běžné datové struktury (seznam, pole) a je nativní součástí Javascriptu. K vyhodnocení stačí prosté eval(). POZOR!!!! eval() is evil()! Nepoužívejte přímo eval(), protože tím spustíte kód! Pokud pracujete s JSON, použijte raději specializované parsery na data.

CORS Pro AJAX plně platí "same-origin policy", tedy bezpečnostní politika "stejného původu". Stránka z domény a.com nemůže pomocí XHR načítat obsah z domény b.com! Nové prohlížeče přichází s podporou CORS: Cross-Origin Resource Sharing

CORS Stačí poslat v AJAX odpovědi hlavičku Access- Control-Allow-Origin a zadat domény, z nichž je povolen přístup pomocí XHR (nebo hvězdičku) <?php header('access-control-allow-origin: *');?>... nějaká AJAX data...

XHR2 podpora CORS lepší podpora pro upload (progress)

Takže AJAX: Zlepšuje UX (User Experience): - zrychluje práci s webovou aplikací - zjednodušuje workflow - umožňuje vytvářet "jednostránkové aplikace" Zato: - zhoršuje ladění - znesnadňuje práci s URL (nelze snadno "poslat odkaz na určitý stav") lze obejít! - bez JS je taková aplikace nepoužitelná.