AJAX (XMLHttpRequest)



Vergelijkbare documenten
File Uploads met standaard ASP.NET

AJAX. Asynchronous Javascript And XML

Javascript oefenblad 1

Les 9: formulier controle met javascript.

4 ASP.NET MVC. 4.1 Controllers

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Katholieke Hogeschool Kempen ASP

What s new in ASP.NET 4.0?

MVC BASICS 2. Kevin Picalausa

Foutcontrole met Javascript

Een gelinkte lijst in C#

Handleiding Authenticatie

ASP.NET Test Jan Van Ryckeghem

IBAN API. Simpel & krachtig. Documentatie : IBAN REST API Versie : 1.0 DE BETAALFABRIEK

Implementatie AssurePay ASP.NET. ideal

Externe pagina s integreren in InSite en OutSite

Eigen Widgets in CRM. Introductie. Limitering. Widgets beschikbaar stellen. Tips & Tricks Eigen Widgets in CRM

VoipCenter Application Programming Interface (API)

Websitecursus deel 1 HTML

Dynamische Websites. Week 2

IMP Uitwerking week 13

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

HTTP SMS API Technische Specificatie messagebird.com versie mei 2014

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Technical Note. API Beschrijving Aangetekend Mailen

Een ASP.NET applicatie opzetten. Beginsituatie:

API Specificatie Doc

Agenda. Wat is HTML? Meer over HTML... Waarom HTML leren? Aniel Bhulai. Inleiding Computergebruik - HTML 1. Waarin maak je een HTML-bestand?

ASRemote WebService. Via deze webservice kunt u:

API Specificatie Doc

Introductie Veiligheidseisen Exploiten Conclusie. Browser security. Wouter van Dongen. RP1 Project OS3 System and Network Engineering

<compilation debug="true" targetframework="4.0"/> // laten staan (auto)

Info-books. Toegepaste Informatica. Deel 35: XML - XSL HO35. Jos Gils Erik Goossens

Hier volgt als hulp wat technische informatie voor de websitebouwer over de werking van de xml web service.

HTML in Outlook Hoe zorgt u ervoor dat uw goed in beeld komt?

Gegevens uit een database tonen

Een verticale vormgeving is makkelijker en sneller te realiseren dan een horizontale.

Frontend ontwikkeling

p1 = JAVASCRIPT p13= AJAX p26= PHP 1

Maak een pivot uit een Generic.List

Inhoud. Pagina 2 van 13

Leer-Rijk Leveranciers API

Formulieren en waarden posten naar een view

Gebruik van cryptografie voor veilige jquery/rest webapplicaties. Frans van Buul Inter Access

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Delft-FEWS & Web Services

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Voorwoord 1. Voorwoord

OAS en het Kennisplatform API s. Dimitri van Hees

JavaScript. Leerkracht: Dany Pinoy door woensdag 28 november Versie: September Website:

oefeningen opstellen met GeoGebra en javascript

DrICTVoip.dll v 2.1 Informatie en handleiding

Zonnepanelen Hoe krijg je de data op je website?

Fun met webparts in ASP.Net

DigiD-authenticatie in SharePoint

Handleiding Woonz.nl iframe

Tutorial 1, Delphi: Geldspraak

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

De architect: in spagaat tussen mensen en technische details. Illustratie met een simpel voorbeeld

Zelftest Inleiding Programmeren

In dit artikel kijken we naar de mogelijkheden van Silverlight

Security web services

Hosting. Bestelformulier en domeinnaamcontrole. Januari, WeFact B.V. Kuiper 7a 5521 DG Eersel Nederland. w: e:

Lab Webdesign: Javascript 7 april 2008

Inhoud. Revisiehistorie Inleiding... 4

Lezen van en schrijven naar het Windows Registry

HTML Graphics. Hans Roeyen V 3.0

Een website maken met databasetoegang.

Gestart als demo/research voor cloud-oplossing. Een Afslagveiling

Dynamische Websites. Week 3. donderdag 3 oktober 13

Dynamiek met VO-Script

Aanleveren van te verzenden sms berichten aan SMS Via

Inhoud. VBA Excel 2010

Fun met webparts in ASP.Net

Web Application Security Hacking Your Way In! Peter Schuler & Julien Rentrop

Objectgeoriënteerd Programmeren: WPO 2a


Formulier maken en opvangen met php

Sparse columns in SQL server 2008

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Inhoudsopgave. Stappen 1 Ervaringen 2 Wireframes 3 PIOTR TEKIEN HKU GAME ART GAR-1B

Transcriptie:

AJAX (XMLHttpRequest) Ajax is hot. De meesten die met webdesign bezig zijn hebben er wel al van gehoord, veronderstel ik. Voor diegenen die er nog niet van hoorden, of nog niet mee werkten volgt hier een tutorialke. Introductie Aan de basis van de ajax techniek ligt het XMLHttpRequest object, wat oorpronkelijk door Microsoft ontwikkeld werd (Lees: enkel voor de MS Internet Explorer browsers). De kracht en de mogelijkheden die dit object brengt, zorgde er echter voor dat er al vlug een implementatie volgde voor andere browsers en het een standaard werd (W3C). (linker figuur) Typisch communiceer je met de server (en database) via een post of postback, waarbij telkens je volledige webpagina moet herladen worden. (rechter figuur) Ajax echter biedt de mogelijkheid om te communiceren met de server zonder de pagina te moeten posten, en om dynamisch specifieke gedeelten van een webpagina te wijzigen met gegevens gehaald van de server (of van een andere bron). Daarenboven kan je zowel tekst (string) data als xml objecten opvragen.

Het XMLHttpRequest object instantiëren Het XMLHttpRequest object is in meerdere vormen beschikbaar, zowel als client-side als server-side control. Noot In deze tutorial heb ik het over de client-side (javascript) versie van het object. Voor het.net Framework is er een gelijkaardige functionaliteit beschikbaar in de vorm van de op HttpWebRequest en HttpWebResponse objecten, zoek op MSDN voor meer info. Internet Explorer Voor het Microsoft (IE) platform is het XMLHttpRequest object een ActiveX control, die als volgt te instantiëren is: Oudere versie van XMLHttpRequest: <script language= javascript type= text/javascript > var httpreq = new ActiveXObject("Microsoft.XMLHTTP"); </script> Nieuwere versie: <script language= javascript type= text/javascript > var httpreq = new ActiveXObject("Msxml2.XMLHTTP"); </script> Natuurlijk, 2 verschillende versies, hoe kies ik welke? Vrij simpel eigenlijk, als volgt zorg je ervoor dat automatisch de correcte versie van het object geïnstantieerd wordt: Var req; req = new ActiveXObject("Msxml2.XMLHTTP"); req = new ActiveXObject("Microsoft.XMLHTTP");

Overige browsers Zoals eerder aangehaald is het XMLHttpRequest object een W3C gespecifieerd object. De overige browsers die zowat de W3C richtlijnen volgen (mozilla, firefox, etc.) kunnen dus ook gebruik maken van XMLHttpRequest, als volgt: req = new XMLHttpRequest(); Cross-browser support We brengen bovenstaande code samen, ook implementeren we een controle als het XMLHttpRequest object wel degelijk beschikbaar is voor de client zijn browser. var if(window.xmlhttprequest) // standaard XMLHttpRequest object req = new XMLHttpRequest(); else if(window.activexobject) // IE/Windows ActiveX versie req = new ActiveXObject("Msxml2.XMLHTTP"); req = new ActiveXObject("Microsoft.XMLHTTP");

Het XMLHttpRequest object gebruiken Met een object zijn we natuurlijk niks, tenzij het enkele methoden en/of properties beschikbaar stelt. Voor deze tutorial ga ik slechts in op de belangrijkste methoden en properties die het object beschikbaar stelt, eens je vertrouwd bent met de basics kan je je bijvoorbeeld op http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/xmlhttprequest.asp en http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp verder verdiepen in de mogelijkheden van het object. Volgende methoden en properties zijn van belang voor ons: Methoden Properties open Onreadystatechange (callback handler) send ReadyState responsetext responsexml status De methode open Met de methode open kunnen we specifiëren op welke locatie we gegevens wensen op te halen, dit is een url (querystring parameters zijn mogelijk). XMLHttpRequest.open(sMethod, surl [, basync] [, suser] [, spassword]) smethode: De eerste parameter omvat de wijze waarop we gegevens opvragen, over het algeleen zal dit de string POST of GET zijn. surl: Als tweede parameter volgt de url string waar we gegevens wensen op te vragen. basync (optioneel): De derde parameter is vrij belangrijk, hiermee specifiëren indien we asynchroon of synchroon de gegevens wensen op te halen. False: Wanneer je kiest voor synchroon (false), dan zal alle verdere uitvoering van javascript code geblokeerd worden totdat we onze gewenste gegevens ontvingen. Dit is dus over het algemeen niet wat we willen voor het dynamisch updaten van onze webpagina. True: Wanneer je kiest voor asynchroon (true), dan kan je andere code uitvoeren terwijl de gegevens opgehaald worden. Asynschroon ophalen van gegevens betekent wel dat we een callback functie nodig hebben (via de onreadystatechange handler), die de verkregen gegevens verwerkt, eens we de opgevraagde gegevens ontvingen. Als je geen basync parameter specifieert is de default true. User & Password: De overige 2 parameters spreken voor zich. Als er authenticatie nodig is om de url aan te spreken, dan kan je hier je gebruikersnaam en paswoord opgeven.

De methode send De methode send start de uitvoering van onze vraag. XMLHttpRequest.send( [varbody]) De optionele parameter varbody geeft de mogelijkheid om name value pairs mee te geven, of om andere data door te sturen (zoals xml). De onreadystatechange event handler Bij asynschroon ophalen van gegevens, hebben we nood aan een callback methode, die de events die verkregen worden van het XMLHttpRequest object verwerkt, en uiteindelijk ook de verkregen gegevens kan verwerken. XMLHttpRequest.onreadystatechange(vHandler) [ = vhandler ] De property readystate Deze property geeft de huidige status van je aanvraag weer, en kan 5 waardes bevatten. [ nstate = ] XMLHttpRequest.readyState nstate Integer. 0 The object has been created, but not initialized (the open method has not been called). 1 The object has been created, but the send method has not been called. 2 The send method has been called, but the status and headers are not yet available. 3 Some data has been received. Calling the responsebody and responsetext properties at this state to obtain partial results will return an error, because status and response headers are not fully available. 4 All the data has been received, and the complete data is available. De property status Deze geeft een HTTP status code terug, bijvoorbeeld 401 voor toegang niet toegestaan, of 200 voor success. [ nstatus = ] XMLHttpRequest.status

De properties responsetext en responsexml Ten laatste hebben we nog deze 2 properties, die het resultaat van je aanvraag teruggeven. Indien je tekst opvroeg, dan kan je die tekst opvragen met responsetext, als je een XML object opvroeg, dan is dit beschikbaar via de responsexml property. Leuk is dat je ook XHTML kan opvragen. De XHTML is dan via beide properties beschikbaar omdat XHTML een XML opmaak heeft, zo heb je de keuze hoe je de gegevens wil verwerken (als DOM object of als string). Zo kan je bijvoorbeeld een XHTML table layout genereren op de server, deze via een XMLHttpRequest object opvragen, ondertussen een loading boodschap weergeven en de table na het ontvangen van de gegevens via responsetext in een DIV weergeven. Omdat XHTML XML compatibel is, kan je ook diezelfde table overlopen als een DOM Document via de responsexml property. [ sbody = ] XMLHttpRequest.responseText [ obody = ] XMLHttpRequest.responseXML ( vervolgt op volgende pagina )

Een demo applicatie Standaard Ajax script Nu brengen we alles wat we tot nu toe zagen samen, en maken we een simpel voorbeeld applicatie. 1. Het script (copy-paste in een Ajax.js document, of evetueel in een script tag in de head van het Ajax.html document zie lager). Let op de document.getelementbyid code in het javascript, dewelke een loading boodschap en de opgevraagde data in het HTML DIV element zal weergeven. var req; function processreqchange() if (req.readystate == 4) if (req.status == 200) var restext = req.responsetext; document.getelementbyid('contentbox').innerhtml = restext; else alert("error:\n" + req.statustext); function loadxmldoc(url) document.getelementbyid('contentbox').innerhtml = "Loading..."; if(window.xmlhttprequest) req = new XMLHttpRequest(); else if(window.activexobject) req = new ActiveXObject("Msxml2.XMLHTTP"); req = new ActiveXObject("Microsoft.XMLHTTP"); if(req) req.onreadystatechange = processreqchange; req.open("get", url, true); req.send("");

2. Start een ASP.NET project en voeg een webform pagina AjaxData.aspx toe. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxData.aspx.cs" Inherits="AjaxData" %> <?xml version="1.0" encoding="utf-8"?> Zwier zowat alles uit de HTML code van de aspx pagina en editeer die als in het kader. Nu hebben we een ASP.NET pagina die een XML document teruggeeft in plaats van gegenereerde HTML. 3. Voeg volgende code in de Page_Load event handler: protected void Page_Load(object sender, EventArgs e) if (Request.Params["data"]!= null) switch (Convert.ToString(Request.Params["data"])) case "table": Response.Write("<table border='1'><tr><td style='width:200px;height:100px;'>hello table</td></tr></table>"); break; case "form": Response.Write("<input type='text' id='txt'></input><br/><button type='submit'>submit</button>"); break; 4. Voeg een Ajax.html pagina toe, hier volgt de HTML code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>untitled Page</title> <script language="javascript" type="text/javascript" src="ajax.js"></script> </head> <body> <button id="btntable" onclick="loadxmldoc('ajaxdata.aspx?data=table');">haal table op</button><br /> <button id="btnform" onclick="loadxmldoc('ajaxdata.aspx?data=form');">haal form op</button><br /> <div id="contentbox" style="border:1px solid black; width:300px; height:200px;"> Geen data </div> </body> </html>

En daar heb je het, je allereerste ajax applicatie is een feit. Een heel simpele start, maar de mogelijkheden zijn enorm. Veel plezier! K.