AJAX een korte introductie Koen Willems & Edwin Vlieg PHPFreakz, 18-11-2006.

Slides:



Advertisements
Verwante presentaties
SharePoint denk in blokken Ton Stegeman.
Advertisements

Symbaloo is de leukste en makkelijkste start op internet
Evaluatie van MS Exchange 2000 en opzetten van een server voor wereldwijde uitwisseling van projectinformatie Bertels David 3ICT1 Stageplaats: Acros Organics.
1 Samenwerkend leren met Google Docs Werking en mogelijkheden van online tekstverwerken.
Clubmiddag 16 april 2013 Ruud Vloeimans 2013 © R.P.Vloeimans, Amstelveen, Netherlands Cloud Computing.
WEB toepassingen. Wat is een WEB toepassing of applicatie t.t.z... een WEB applicatie is een applicatieprogramma welke je via internet kunt gebruiken,
Let op bij een upgrade! = op DVD (geen CD) Gebruik je Windows Vista? Als je Windows Vista hebt, kun je Windows 7 Upgrade-versies aanschaffen.
Websites maken Waarom? Voor Wie? Hoe?
Netwerken. Wat is een netwerk? Je spreekt van een netwerk van zodra twee of meer computers met elkaar verbonden zijn. Je kan thuis een klein netwerkje.
(c) Marc de Graauw Presentatie XML Marc de Graauw 2 maart 2000.
ASP.NET AJAX Extensions Richard Soeteman
Applicatie virtualisatie
Cartografie met als medium het ‘World Wide Web’
Website maken met WordPress
HTML Les 1: Introductie HTML
The Next Generation Webpresentatietechniek nieuwe stijl
OgH – 30 maart 2010 Your Oracle Solutions Partner Olivier Dupont Jan Huyzentruyt Business Case: Flightcare België APEX op de luchthaven in Brussel.
Mr. Anton Ekker zomerborrel AdLantic 5 juni 2012.
© BeSite B.V www.besite.nl Feit: In 2007 is 58% van de organisaties goed vindbaar op internet, terwijl in 2006 slechts 32% goed vindbaar.
Web Apps de online plek om samen te werken Gebruik Office overal Beste gebruikerservaring Werk beter samen Breng ideeën tot leven.
Maurice de Beijer. Wie is Maurice de Beijer Microsoft MVP DevelopMentor trainer SDN Sectiehoofd UX Onafhankelijk software ontwikkelaar
Presentatie Clubmiddag 21 mei 2014 door Henk Kesting soorten en instellingen.
Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
ChatBox
The vision at work Batteries included Ervaringen van een ISV op hosting avontuur Sven Middelkoop Corporate ICT Manager Exact Holding N.V.
WEBSITES ONTWIKKELINGEN Trends en standaarden op het gebied van webdesign HTML, DHTML, XHTML, FLASH, CSS Henk Zegwaard december 2003.
Nieuw in LIPS VLUG 2 26 juni 2006 Kristof Brams. Overzicht Vernieuwde editor Printervriendelijke pagina Statistieken Variabele fontgrootte Grootte van.
Webapplicaties: de clientkant in het universitaire onderwijs Sylvia Stuurman – Herman Koppelman Faculteit Informatica.
Formuliervalidatie Met Javascript.
BROWSERS Een webbrowser (ook internetbrowser, (web)bladeraar of webverkenner genoemd) is een computerprogramma om webpagina's te kunnen bekijken. Populaire.
Presentatie Het BIOS (wat is dat) Rondkijken in het BIOS
CLOUD COMPUTING Wat is het? Wie zijn de aanbieders? Is het veilig? Wat kun je er mee? Robert K Bol PVGE Best.
Deel XXI 1 Internetapplicaties Internetprogrammeren Capita Selecta.
XForms TU Delft Library Digitale Productontwikkeling Egbert Gramsbergen.
Windows Applicaties Bouwen met Visual Studio.NET Sijmen Koffeman Development Consultant Microsoft.
Safari Google Chrome Internet Explorer Mozilla Firefox Opera Praktische opdracht Informatica Koen Maaskant Daniël Schotanus Internetbrowsers.
Starten met PHP Dynamischer bouwen. PHP is een een scripttaal waarmee de server pagina’s in elkaar kunt laten zetten. Het verschil met HTML: Een php pagina.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
PHP & MYSQL LES 01 PHP BASICS. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
De evolutie van JavaScript
PADS4 maakt het eenvoudig om informatie te verspreiden naar een specifiek publiek op de juiste plaats en het juiste moment PADS4 is een professionele oplossing.
Web 1.0 HTMLAfbeeldingen FlashHyperlinks CSS Participation AJAX Usability Design Ruby on Rails.
Content Management Systeem. Maart 2000Case: World Online International2 Klantprofiel I World Online International BV is een beursgenoteerde Pan-Europese.
Webapplicaties: de clientkant Herman Koppelman Sylvia Stuurman 13 november 2010.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Stef van Dijk. Inhoud Introductie Cookies? Waarom localStorage? Gebruik localStorage Demo localStorage Bronnen.
Webbrowsers Inhoudsopgave  Webbrowser  Geschiedenis  Verschillende webbrowsers Bekende webbrowsers Minder bekende webbrowsers  Vergelijking.
Prototyping Week 7 // Tweenlite & API. TweenMax Snel mooie en effectieve animatie.
Webpagina's maken met (X)HTML en CSS Lang leve het Kladblok!!! Verboden voor editors.
Agenda  Lesuur minuten  Wat kun je met programmeren?  Wat is code en hoe werkt het?  Code schrijven: de basis  Lesuur minuten  Zelf.
COMPUTERLES 1 Introductie. Inhoud ■Inleiding ■Wat is een computer? ■Waarom gebruiken we Windows?
WERK-portal Portalfuncties Lesmateriaal van verschillende ontwikkelaars Leerroutes en medialinks Veel gebruik van multimedia.
Hoe beheer je efficiënt computers op school? Linux Terminal Server Project (LTSP)in de praktijk Rob Burggraaf Bovenschoolse ICT coördinator VPCO.
Maak je website toegankelijk voor alle doelgroepen.
Hoe een website realiseren ? Horen, zien en ontsluiten Gooik, 27 januari 2006 Johnny Van Bavegem Heemkundige Kring van Gooik.
Webwinkel in het D-cluster van de opleiding Logistiek Ad van Kooten – docent ERP toepassingen  Pract. 1.
GUI & classes Een Gui in een class steken en het object gebruiken.
Javascript. Voortgang op: Account gegevens Invullen op: Bevestiging ontvangen ( ) via website?
Surfen op het internet Basisbegrippen
Javascript.
Javascript.
Javascript.
Usability voor het web en mobiele apparaten
OGH APEX dag 2012 Toeters en bellen met APEX
De diensten die een onderneming kan bieden aan haar klanten, leveranciers en eigen medewerkers zijn direct afhankelijk van haar IT-infrastructuur. In het.
ASP.NET MVC Web Development
ASP.NET MVC Views.
HTML5 introductie.
Transcript van de presentatie:

AJAX een korte introductie Koen Willems & Edwin Vlieg PHPFreakz,

We werken conform webstandaarden!!! zie bijv.

Een verschil? Bush MB 60 (1957) oud Bush TR 82 (1959) nieuw

oud: buizenradio Bush MB 60 (1957) nieuw: transistorradio Bush TR 82 (1959) Het verschil: onderhuids

Makkelijk kunnen we het niet maken? Bron: Antwoord: […] “Windows 98 is niet geschikt voor het doen van elektronische aangifte met behulp van de voorziening die de Belastingdienst biedt voor de inkomstenbelasting (winst) en vennootschapsbelasting.” […] “In totaal gaat het naar verwachting om tussen de en aangiften inkomstenbelasting (winst) op een totaal van Deze ondernemers kunnen alleen zelf aangifte doen als zij overstappen op een nieuwer besturingssysteem.” […]

want: Groepen gebruikers ondervinden hinder bij de toegang tot informatie en diensten op internet: –Apple en Linux computers –Firefox, Mozilla, Netcape, Safari, Konqueror, Opera en andere, minder populaire browsers –PDA’s, smartphones, e.d. –Gebruikers met een functiebeperking

Toegankelijkheid En Toegankelijkheid Iedereen en alles TOEGANG!!!

Strikte scheiding tussen Inhoud (XHTML) Vorm (CSS) Gedrag (bijv. javascript)

Voordelen Van een website van de nieuwe generatie...en van een transistorradio: Relatieve eenvoud van het ontwerp Lichter Sneller Goedkoper

Bouwkosten zijn ongeveer gelijk Exploitatie is goedkoper –Bandbreedte –Performance bij piekbelasting –Beheer –Overdraagbaarheid –Migratie Goedkoper?

Styling Externe stylesheets Apparaat-afhankelijk

Strategiën -Gracefull degradation -Progressive enhancement

Gracefull degradation <a href=” onclick=“openSubmenu(); return false;”> submenu (voorbeeld van een uitklapmenu)

Uitgangspunt is de moderne browser Doel is oudere browsers dezelfde functionaliteit te bieden In oudere browsers wordt wordt de informatie beperkter, maar toegankelijk gepresenteerd. Nodigt uit tot upgraden

Progressive enhancement <a href=“ id=“submenu” >submenu</a>

een strategie van webdesign, die op een gelaagde wijze de nadruk legt op toegankelijkheid, semantische opmaak en externe layout- en scripttechnologien, die iedereen toegang biedt tot de basisinhoud en basisfunctionaliteit bij iedere browser of internetverbinding, terwijl diegenen met een geavanceerder browser of een betere internetverbinding software wordt aangeboden om een betere versie van de pagina te ervaren

Dus: -Iedereen dezelfde functionaliteit -Waar mogelijk iets extra’s

GD:toegankelijkheid verbeteren zonder veel gebruiksvriendelijkheid in te leveren PE:niveau van gebruiksvriendelijheid verhogen zonder toegankelijkheid in te leveren

<a href=“ id=“submenu” >submenu maar dat submenu dan?  extern javascript  waarvoor het id het aanhaakpunt vormt

de xhtml submenu

script.js window.onload = function() { Listener(); } function Listener() { var Elm = document.getElementById(‘submenu’); if(window.attachEvent) { Elm.attachEvent(‘onclick’, openSubmenu); } else if(window.addEventListener) { Elm.addEventListener(‘click’,openSubmenu, false); } } function openSubmenu() { // functie }

function (add) { if(document.getElementById(‘submenu’) { addEvent(document.getElementById('submenu'), 'click', openSubmenu); } function openSubmenu() { // functie } function addEvent(obj, evType, fn) { if (obj.addEventListener) {// W3C-model obj.addEventListener(evType, fn, false); return true; } else if (obj.attachEvent) {// IE obj.attachEvent('on'+evType, fn); return true; } else { return false; } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); } addLoadEvent(add);

Unobtrusive javascript Ehm … dat hebben we net gemaakt! Let er wel op dat de events die je aan een element toevoegd apparaat-onafhankelijk zijn (drempelsvrij, WCAG 1.0)

Device independent events onfocus onblur onselect onchange onclick (bij een link of een formulier

Device dependent events onmouseover onmouseout ondblclick onkeydown onkeyup Etc.

Het probleem van internet internet is stateless (server weet niet wat de browser doet) World Wide Wait steeds moet de hele pagina geladen te worden Gebruikers hebben het gevoel te moeten wachten. klik – stop – klik – stop – klik - stop

oplossing? -Een handjevol protocollen aanpassen -Het WWW resetten

oplossing slechts onderdelen van een pagina ophalen of verversen het probleem is zo oud als internet Andere (deel)benaderingen: –cache –iframes (+ javascript) niet doen!!! –cookies en sessions – AJAX suggereert het gevoel van een desktop-applicatie

Asynchronous Javascript and XML AJAX XHTML en CSS (presentatie) Document Object Model (dynamisch tonen van informatie en voor interactie;) XML en XSLT (voor de opslag, aanpassing en transport van gegevens) (niet per se nodig) XMLHttpRequest object (voor asynchrone communicatie) JavaScript (om alles aan elkaar te binden)

Bron:

in gewoon Nederlands ‘we zorgen er voor dat javascript op de achtergrond gegevens van de server haalt en stoppen die gegevens in het DOM’ dat is alles

-een opstap hoe je dat maakt -gebaseerd op

de XHTML Voornaam: Suggesties:

javascript: eerst twee standaardfuncties function addEvent(obj, evType, fn) { if (obj.addEventListener) {// W3C-model obj.addEventListener(evType, fn, false); return true; } else if (obj.attachEvent) {// IE obj.attachEvent('on'+evType, fn); return true; } else { return false; } } function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); } } }

en een functie voor het XMLHttp-object function GetXmlHttpObject() { var objXMLHttp=null; try { objXMLHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { } if (objXMLHttp==null) { objXMLHttp=new XMLHttpRequest(); } return objXMLHttp; }

ajax.php <?php header('Content-type: text/html; charset=utf-8'); $sQuery = "SELECT voornaam FROM personeel WHERE voornaam LIKE '%".mysql_real_escape_string ( $_GET['voornaam'] )."%'"; if(false === ($rResult = mysql_query($sQuery,$rDBConnection))) { echo 'foutmelding'; } else { if(mysql_affected_rows() != 0) { echo ' suggesties: '; echo ' '; while ($aRow = mysql_fetch_assoc($rResult)) { echo ' '.$aRow['voornaam'].' '; } echo ' '; } else { echo ' Geen suggestie gevonden '; } } ?>

en nu maken we het werkend addLoadEvent(checkInput);// we starten checkInput function checkInput() {// die een event koppelt addEvent(document.getElementById(‘voornaam'), 'keyup', showHint); }

function showHint() { var str = document.getElementById(‘voornaam').value;// pak de invoer if (str.length==0) { // terug als leeg document.getElementById(“suggestie").innerHTML=""; return } xmlHttp=GetXmlHttpObject()// maak xmlHttp if (xmlHttp==null) {// terug als niet alert (“Uw browser ondersteunt deze functionaliteit niet"); mogelijk return; } var url = “ajax.php“// url maken url = url + "?q=“ + str; url = url + "&sid=“ + Math.random(); // uniek maken xmlHttp.onreadystatechange = stateChanged ;// doe functie xmlHttp.open("GET",url,true);// open object xmlHttp.send(null);// versturen }

function stateChanged() { // hebben we hem terug? if ( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) { // zet de XHTML die we van ajax.php kregen in het DOM document.getElementById(‘suggesties').innerHTML = xmlHttp.responseText ; } } Noot: innerHTML is geen DOM, maar wel de snelste manier

Dus: addLoadEvent(checkInput); function checkInput() { addEvent(document.getElementById(‘voornaam'), 'keyup', showHint); } function showHint() { var str = document.getElementById(‘voornaam').value; if (str.length==0) { document.getElementById(“suggestie").innerHTML=""; return } xmlHttp=GetXmlHttpObject() if (xmlHttp==null) {alert (“Uw browser ondersteunt deze functionaliteit niet"); return;} var url = “ajax.php?q=“ + str + "&sid=“ + Math.random(); xmlHttp.onreadystatechange = stateChanged ; xmlHttp.open("GET",url,true); xmlHttp.send(null); } function stateChanged() { if ( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" ) { document.getElementById(‘voornaam').innerHTML = xmlHttp.responseText ; } plus de standaardfuncties!!!

maar: -voor iedere letter die ingetypt wordt wordt een query gedraaid -Usability kan ernstig gevaar lopen bij een trage verbinding (bijv. als je submitbuttons laat verdwijnen)

Doe het altijd unobtrusive !!!

Frameworks AJAX prima ‘met de hand’ te doen, maar Frameworks bieden een hoop comfort, voornamelijk vanwege de browser compatibility problemen

Prototype Uitbreiding van JavaScript op gebied van DOM, array’s, events en AJAX Te vinden op Goede documentatie op: ml ml

AJAX & Prototype Ajax.Request(url, options) Laad de externe url Ajax.Updater(container, url, options) Laad de inhoud van de externe url in de container

Ajax.Request Klik hier $(‘ajax-example’).onclick = function(){ new Ajax.Request(‘/get’, { parameters: “id=1”, onComplete: function(response){ alert(response.responseText); }, }); }

Ajax.Updater Klik hier $$(‘#ajax-example a’).each(function(element){ element.onclick = function(){ new Ajax.Updater(‘ajax-example’, ‘/get’, { method: “get”, parameters: “id=1” }); } });

Leuke linkjes nthandlers.php pt/ mments/how_to_make_your_ajax_applications_ accessible/