AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML



Samankaltaiset tiedostot
Digitaalisen median tekniikat. Luento 4: JavaScript

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

Järjestelmäarkkitehtuuri (TK081702)

Taustaa. CGI-ohjelmointi

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

Web Service torilla tavataan!

Microsoft Visual Studio 2005

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Microsoft Visual Studio 2005

Sisällys Clerica Web-sovellusten käytön aloittaminen 2

EK:n palkkatiedustelun asiointipalvelu ja SFTPtiedonsiirto. Ohje

JWT 2017 luento 10. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Täysautomatisoitu raportointiympäristö. Joni-Petteri Paavilainen Jani Alatalo

Ajax selainpohjaisten sovellusten laatimisessa. Nico Hiort af Ornäs

Datanhaku www-käyttöliittymästä Mikko Parviainen, Ilmatieteen laitos / tietojärjestelmät mikko.parviainen@fmi.fi

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Digitaalisen median tekniikat Luento 1: Intro

10 Nykyaikainen WWW-arkkitehtuuri

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Ohjelmoinnin perusteet Y Python

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

TermBase NET versio (Beta)

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

AJAX-TEKNIIKKA. Miten sitä käytetään Suomessa?

Ohjelmoinnin perusteet Y Python

HTML5 video, audio, canvas. Mirja Jaakkola

Hohde Consulting 2004

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

MultiSender -mobiilisovellus

Ohjelmoinnin perusteet Y Python

Laajuus 5 op Luennot: 12 x 2t Harjoitukset: 7 viikkoharjoitusta harjoitusten tekemiseen saatavissa apua 2 ryhmää / harjoitus

ETÄTERMINAALIYHTEYS SELAIMELLA

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Koskelo-Sovellusprojekti. Vaatimusmäärittely

Digitaalisen median tekniikat. Luento 3: CSS

Alkuun HTML5 peliohjelmoinnissa

Harjoitustyö: virtuaalikone

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

HTML5 -elementit jatkuu

58160 Ohjelmoinnin harjoitustyö

Digitaalisen median tekniikat. Esteettömyys ja käytettävyys Harri Laine 1

Helsingin Sanomat ipad

Oman videon toimittaminen Tangomarkkinat laulukilpailuun 2015


Tietokannat II -kurssin harjoitustyö

2. PEHMEÄ XHTML XRAJAHTML

TIEDEJUTTUKURSSI FM VILLE SALMINEN

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Digitaalisen median tekniikat xhtml - jatkuu

ITKP102 Ohjelmointi 1 (6 op)

MIKKO HAAPANEN AJAX-TEKNIIKOIDEN HYÖDYNTÄMINEN VAISALA ROSA -SÄÄASEMAN SELAINKÄYTTÖLIITTYMÄSSÄ

Visma Software Oy

ARVO - verkkomateriaalien arviointiin

Ohjelmoinnin perusteet Y Python

Visma Nova Webservice Versio 1.1 /

Sivuston nopeus. Sivullasi on 3 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.

Ajax: WWW-sovellusten uudet mahdollisuudet

Valuma-alueet pilvipalvelusta Leaflet+Zoo+GeoServer -kombolla

JAVASCRIPT-KEHITYSKIRJASTOJEN VERTAILU

Tikon Web-sovellukset

OnniSMS Rajapintakuvaus v1.1

Multimaker7 ohjelmalla tuotettujen ohjelmien julkaisusta

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

Olio-ohjelmointi Javalla

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

ESA BORG AJAX-HENKINEN SELAINKÄYTTÖLIITTYMÄ ASE-LAITOKSEN SÄÄASEMAAN. Kandidaatintyö

sertifikaattiratkaisu Apitamopki

SENAATTILA uudistuu keväällä 2015

Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:

Sivuston nopeus. Sivullasi on 2 uudelleenohjausta. Uudelleenohjaukset viivästyttävät sivun lataamista.

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat

WWW-Sivustojen suunnittelu

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

206 Verkkosivun tuottaminen finaalitehtävät

Ohjelmoinnin perusteet Y Python

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmoinnin peruskurssi Y1

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Digitaalisen median tekniikat xhtml - jatkuu

Paavo Räisänen. WampServer palvelimen asennus ja käyttö Eclipsen kanssa, sekä ensimmäinen FTP yhteys.

Tarjouspalvelu.fi. Käyttöohjeet. Osallistu tarjouskilpailuihin tehokkaasti ja turvallisesti. Tarjouspalvelu.fi -toimittajaportaali

ARVO - verkkomateriaalien arviointiin

Web Services tietokantaohjelmoinnin perusteet

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmoinnin perusteet Y Python

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)

Sivuston nopeus. Poista hahmonnuksen estävä JavaScript ja CSS sivun yläosan sisällöstä

Ohjelmoinnin perusteet Y Python

Transkriptio:

AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen periaatteen mukaisia webohjelmia Keskeisellä sijalla JavaScript-kieli ja sen XMLHttpRequest-metodi ja DOM-malli Muita mukana olevia tekniikoita CSS,XML, XHTML ja DHTML Nykyisten web-ohjelmien ongelmia Heikko interaktiivisuus, käytettävyys ja yksinkertaiset käyttöliittymät Sivujen siirtämiseen kuluu aikaa ja sisältää usein turhaa tiedonsiirtoa, sillä usein vain pieni osa sivusta muuttuu. Pieni muutos sivulla aiheuttaa turhaa viivettä, jos kaikki tiedot kulkevat aina palvelimen kautta Asynkronisuus Tähän asti kaikki esitellyt web-ohjelmat ovat olleet synkronisia. Kaikki tiedonsiirto tehdään kerralla asiakkaan ja palvelimen välillä Sivun tietojen muutokset vaativat koko sivun lähettämisen uudelleen Ajax-ohjelmassa voi tehdä sivua täydentäviä pyyntöjä eri palvelimilta käyttäen XMLHttpRequest-metodia Vain jotkin selaimet tukevat ja toteutuksissa eroja Vaikka metodin nimessä esiintyy XML, palvelimen vastaus voi olla jotakin muuta kuin XML-muotoista dataa

Ajax-sovelluksen sykli 1. HTTP-pyyntö 2. HTML vastaus PALVELIN SELAIN 3. JS käskyt 4. XMLHttpRequest AJAX 6. HTML,CSS metodit 5. Data Kaavion kulku 1. Esimmäinen pyyntö palvelimelle, käyttäjää pyytää sivua 2. Palvelin kokoaa sivun, johon sisältyy HTML-,CSS-koodit, sekä tarvittavat JavaScript- ja AJAX funktiot,(javascriptiä nekin) 3. Loput pyynnöt palvelimelle tehdään JavaScript koodin välityksellä käyttäen sivun latauksen yhteydessä tulleita AJAX-funktioita hyväksi. 4. AJAX osuus JavaScript koodista tekee XmlHttpRequest pyynnön palvelimella 5. Palvelin prosessoi pyynnön ja vastaa pyyntöön (usein XMLmuotoisella) dokumentilla. Vastaus sisältää vain sen datan, joka muuttaa sivun ulkoasua pyynnön mukaiseksi. Tyypillisesti vain murto-osa sivun kokonaisdatamäärästä. 6. AJAX osuus JavaScript-koodista prosessoi vastauksen ja päivittää sivua joidenkin elementtien osalta tai tekee jotain muuta ohjelmoitua toimintaa (HTML + CSS) Ongelmia ja haasteita AJAX-konsepti vaatii hyviä JavaScript-ohjelmointitaitoja Perinteisesti web-ohjelman kulkua on voitu ajateltu erillisinä sivuina ja esim ASP.NET-ratkaisussa datan tilaa on kuljetettu VIEWSTATE oliossa sivulta toiselle. Nyt ajattelu muuttuu totaalisesti ja web-ohjelmien kulku muistuttaa enemmän muita sovelluksia Back-nappi tai Bookmark-toiminto ei toimi kuten ennen. Myös web-käyttäjät joutuvat opettelemaan AJAX-sovellusten käyttöä Edut Tehokkaampi suoritus, koska ylimääräisestä datan siirrosta päästää eroon Erityisesti paljon dataa välittävissä sovelluksissa Pienemmät odotusajat pyyntöihin Käytettävyys paranee Datan siirto voidaan toteuttaa taustaajona, jolloin sivun muita toimintoja voidaan käyttää sillä aikaa Samalle sivulle voidaan tuottaa dataa eripalveluista

XMLHttpRequest Luonti Microsoft IE: try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); catch (e2) { xmlhttp = false; Versioriippumattomaksi koodin saa, kun testaa ensin Microsoft-tyylillä, jos se epäonnistuu jatkaa Firefox-tyylillä Firefox, mozilla: var xmlhttp = new XMLHttpRequest(); Ennen pyynnön suorittamista JavaScript koodilla kerätään pyyntöön tarvittava data käyttäjän syötteistä esimerkiksi getelementbyidmetodilla Pyynnön tekeminen 1. Kerää relevantti data käyttäjän syötteistä eli lomakkeelta. 2. Rakenna URL-data 3. Avaa yhteys palvelimelle 4. Aseta XMLHttpRequest-olioon palvelimen vastauksen käsittelevä JavaScript-funktio 5. Lähetä pyyntö function callserver() { // Puhelinnumeron haku nimen ja osoitteen perusteella // Tiedot lomakkeesta var name = document.getelementbyid( name").value; var address= document.getelementbyid( address").value; // Onko tiedot annettu, jos ei lopetetaan if ((name == null) (name == "")) return; if ((address == null) (address == "")) return; // Rakenna URL var url = "/scripts/annanumero.php?nimi=" + escape(name) + "&=osoite" + escape(address); // Avataan yhteys xmlhttp.open("get", url, true); // Asetetaan vastauksen käsittely funktioon updatenumber xmlhttp.onreadystatechange = updatenumber; // lähetetään pyyntö xmlhttp.send(null);

Vastauksen käsittely AJAX periaatteen mukaan kerrallaa välitettävä tietomäärä pidetään pienenä. Edellisen kalvon esimerkin vastaus sisältää vain puhelinnumeron Kun edellisellä sivulla luodun olion xmlhttp readystate-atribuutti muuttuu, updatenumber-metodi käynnistyy function updatenumber() { if (xmlhttp.readystate == 4) { var response = xmlhttp.responsetext; document.getelementbyid( phone").value = response; Tässä esimerkissä datan oletetaan olevan tavallista tekstidataa, ei XML-muotoista dataa readystate-atribuutin arvot 0: Pyyntö alustamaton (open kutsumatta) 1: Pyyntö alustettu, mutta send tekemättä. 2: Pyyntö lähetetty ja on palvelimen käsiteltävänä, Tässä vaiheessa voi mahdollisesti tarkistaa vastauksen Http-protokollan mukaisia otsikkotietoja. 3: Pyyntö käsittelyssä ja osittaista vastausdataa on saatavilla, mutta käsittely ei ole päättynyt 4: Pyynnön käsittely päättynyt vastaus valmis responsetext Vastaus tallentuu responsetext attribuuttiin responsetext voi olla mitä tahansa tekstimuotoista dataa, ei välttämättä XMLmuotoista Web 2.0 AJAX-konseptia pidetään uuden webteknologian, Web 2.0:n perustana Tulevaisuudessa yhä useampi websovellus tehdään AJAX-konseptin mukaisesti Esimerkiksi karttapalvelu http://maps.google.com Karttaa voidaan zoomata ja sinä voi liikkua, ilman, että koko web- sivu vaihtuu

Esimerkkejä http://www.degraeve.com/reference/simple-ajax-example.php http:// www.webpasties.com/xmlhttprequest/