Académique Documents
Professionnel Documents
Culture Documents
AJAX
1 / 38
Plan
JavaScript Exercices JavaScript Le Modle Objet de Document (DOM) Exercices : manipulation du DOM en JavaScript Communication asynchrone client/serveur
AJAX
2 / 38
Le langage JavaScript
AJAX
3 / 38
Bibliographie
AJAX
4 / 38
Lien utiles
Outils et bibliothques
FireBug http ://www.getrebug.com/ (extension Firefox) Bibliothques :
jQuery http://jquery.com Prototype http://prototype.conio.net ...
Documentation en ligne
Mozilla JavaScript Reference http://developer.mozilla.org/en/docs/JavaScript Mozilla DOM reference http://developer.mozilla.org/en/docs/DOM (docs en franais sur http://developer.mozilla.org/fr/docs)
AJAX
5 / 38
Gnralits
JavaScript est un langage interprt, normalement embarqu dans un navigateur web. Ce nest pas du Java interprt (mais la syntaxe ressemble un peu). Normalisation : ECMA (http://www.ecma-international.org) Langage utilis au dpart pour vrier des formulaires HTML, sest enrichi de manire dsordonne (mais non libre). Autres environnement dexcution : Flash (ActionScript, Acrobat Reader, PhotoShop, ...)
JavaScript est support par la plupart des navigateurs. Firefox possde de nombreux bons outils de dveloppement, sous forme dextensions.
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 6 / 38
AJAX
7 / 38
8 / 38
Le code JavaScript peut tre pnible mettre au point. utilisez un dbugueur ; soignez la prsentation (indentation du code) ; ne jamais utiliser de variables globales (utiliser le mot cl var).
AJAX
9 / 38
Types de base
AJAX
10 / 38
Nombres
Tous les nombres sont des ottants (pas dentiers), en 64 bits (IEEE 754). Oprateurs habituels : +, -, /, *, % Math : Math.PI, Math.E, ... Math.abs(x), Math.cos(x), Math.sqrt() Math.ceil(x), Math.floor(x), Math.round(x) Math.random() Conversions : parseInt("123"), parseFloat("3.14") NaN, Infinity 1/0 == Infinity NaN + 1 == NaN (fonction: isNaN(x))
AJAX
11 / 38
Chanes de caractres
Squences de caractres. "Bonjour" Les chanes sont des objets : n = "Bonjour".length Les caractres sont des chanes de longueur 1 : c = "bruit".charAt(0) Nombreuses mthodes utiles (voir doc) "Feu rouge".replace("rouge", "vert") "Bobo".toUpperCase()
AJAX
12 / 38
Deux types spciaux ayant une seule valeur : null : variable sans valeur (comme en SQL) undefined : variable non initialise (ou non existante) Boolens : true, false Oprateurs logiques &&, ||, !
AJAX
13 / 38
Variables
Dclaration dune variable : Utiliser var : var x; var pi = 22/7; // approximatif Toujours utiliser var, sinon la variable est globale, et cest le dbut de la n... Si la variable nest pas initialise, elle est gale undefined.
Oprateurs
+, -, *, /, % +=, -=, *=, /= a++, b--, --a, ++a "Salut " + "Toto" == "Salut Toto" "3" + 45 == 48
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 14 / 38
Strutures de contrles
Comme en C ou Java... (if, while, do { ... } while (); switch) Boucle for : for (var i =0; i < 10; i++) { ... } Exceptions : try/catch/nally
AJAX
15 / 38
Objets
Deux notations quivalentes : var obj = new Object(); var obj = {} Accs aux membres (proprits) : obj.nom = "Toto"; obj["name"] = "Toto"; (notez que "name" peut tre une variable)
Notation :
var obj = { nom : "Toto"; prenom : "Marcel"; age : 22; }
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 16 / 38
Tableaux (array)
Les tableaux sont juste une classe spciale dobjets. Les cls sont des nombres (indices).
Autre notation :
var A = [ "Fromage", 3.12, new Object() ]
Ajout en n :
A[A.length] = 12;
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 17 / 38
Fonctions
Trs simple, arguments non typs statiquement : function ajouter( x, y ) { var somme = x + y; return somme; } Si pas de valeur retourne, la fonction retourne undefined ; si un argument manque, il est aussi undefined.
AJAX
18 / 38
AJAX
19 / 38
Exercices
Ecrire une page web qui lors de son chargement ache un message "Bienvenue" (fentre popup) lors de son chargement ;. Modier le script pour quil ache successivement les phrases contenues dans un tableau. Par exemple si var Messages = [ "Bienvenue", "sur ce site", "ennuyeux, non ?" ]; la page achera successivement 3 fentres popups.
Reprendre lexemple (transparent 8) et modier le pour quil ache la phrase entre lenvers (si on saisi ABC, on verra CBA en dessous.
AJAX
20 / 38
Le DOM est une interface permettant aux programmes de manipuler les documents. Le document (XHTML) est vu comme un arbre. Le DOM ne dpend pas dun langage particulier (mais nous utiliserons JavaScript). Le DOM est dni par le W3C. http://www.w3.org/DOM
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference
Le DOM dni la struture dun document (arbre, lments) et une API pour y accder.
AJAX
21 / 38
Inspecteur DOM
AJAX
22 / 38
Cration de nuds
document.createElement( type ) document.createTextNode( text ) element.appendChild( element ) raccourci commode : element.innerHTML
Style CSS
proprits className et style
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 23 / 38
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http <html> <head> <title> Essai DOM </title> <link rel="stylesheet" type="text/css" href="helloDOM.css" /> <script type="text/javascript" src="helloDOM.js" /> </head> <body> <p id="bonjour">Bonjour</p> <div id="vide"></div> </body> </html>
E. Viennet (I.U.T. de Villetaneuse, Paris 13) AJAX DUT Informatique - S3 2009 24 / 38
AJAX
25 / 38
// Ajoute un noeud (texte) function ajouterNoeud(el, text) { var childElement = document.createElement("div"); el.appendChild(childElement); var txtNode = document.createTextNode(text); childElement.appendChild(txtNode); }
AJAX
27 / 38
Exercices
1
crire une page XHTML avec un menu rouge, vert, bleu, blanc qui permette de changer la couleur de fond de la page. crire une page avec des paragraphes de classe texte. En bas de la page, indiquer le nombre de total de caractres dans les paragraphes de classe texte. Cette valeur doit tre calcule par une fonction JavaScript aprs le chargement de la page. crire une page XHTML contenant un tableau. Chaque colonne a un titre (lment th). Lorsquon clique sur un titre, trier les lignes du tableau selon les valeurs de cette colonne. (NB : on pourra regarder, voire utiliser, le code disponible : http://www.kryogenix.org/code/browser/sorttable).
AJAX
29 / 38
Requtes principales :
HTTP GET HTTP POST Plusieurs techniques existent (utilisation de frame, iframe), mais la plus pratique (et moderne) et dutiliser lobjet XMLHTTPRequest. XMLHTTPRequest existe dans IE, Firefox, Mozilla et Safari, mais dire lgrement dun navigateur lautre...
AJAX
30 / 38
Codes dtats
Dnissons quelques constantes : var var var var var READY_STATE_UNINITIALIZED=0; READY_STATE_LOADING=1; READY_STATE_LOADED=2; READY_STATE_INTERACTIVE=3; READY_STATE_COMPLETE=4;
AJAX
33 / 38
En gnral on utilise ct serveur du PHP, du Python ou du Java... Si les donnes renvoyer sont structures, on utilise en gnral un format XML.
AJAX
35 / 38
Exercices
1
Modier le script CGI en introduisant un dlai dans le traitement (sleep). Modier le code de traiteReponse pour acher les autres tats (par exemple informations en cours de chargement.... Soit un chier texte sur le serveur, au format suivant : nom ville pays age
crire deux scripts CGI (en bash), lun renvoyant simplement la liste des noms, lautre le nom, la ville, le pays et lage correspondant un nom pass en argument (utiliser QUERY_STRING, cut et grep). Lors du chargement de la page, crer un menu qui permette de slectionner un nom parmi la liste (la liste sera demande au serveur). Lorsque lutilisateur choisi un nom dans le menu, acher les informations correspondantes cet utilisateur.
AJAX
37 / 38
Conclusion (provisoire)
Nous navons fait queeurer les bases dAJAX. En particulier, il faudrait vous familiariser avec lutilisation du XML. Dans les applications relles, on utilise en gnral un toolkit existant. Citons en vrac : Prototype http ://prototype.conio.net OpenRico http ://openrico.org Google Web Toolkit http ://code.google.com/webtoolkit/ JSON-RPC http ://json-rpc.org/ Scriptaculous http ://script.aculo.us http ://www.potix.com/ Mochikit http ://mochikit.com etc etc ... sujet trs actif en ce moment ...
AJAX
38 / 38