Partie 5 - Manipuler JQUERY
Cette partie couvre l'utilisation de la bibliothĂšque JQuery pour la manipulation du DOM et l'exĂ©cution de requĂȘtes asynchrones avec AJAX.
Chapitre 1 : Découvrir JQUERY (Pages 208-224)
1. Concepts & Définitions
- JQuery : Une bibliothÚque JavaScript open-source inventée par John Resig en 2006. Elle est compatible avec les différents navigateurs web.
- RÎle de JQuery : Simplifier l'utilisation de JavaScript et la manipulation du DOM sur les sites Web. Les traitements nécessitant l'écriture de nombreuses lignes de code JavaScript sont encapsulés dans des méthodes appelées dans une seule ligne de code.
- Fonctionnalités de la bibliothÚque JQuery :
- Manipulation du HTML et DOM
- Manipulation du CSS
- Méthodes d'événement HTML
- Effets et animations
- AJAX
- Installation de JQuery :
- Méthode 1 : Téléchargement : Utiliser un fichier JQuery téléchargé depuis
jquery.com.- Version de production : Version minifiĂ©e et compressĂ©e pour la phase de lâhĂ©bergement.
- Version de développement : Version non compressée et lisible, pour la phase de développement et de tests.
- Méthode 2 : JQuery via CDN (Content Delivery Network) : Inclure JQuery à partir d'un CDN sans avoir besoin de télécharger les fichiers.
- Méthode 1 : Téléchargement : Utiliser un fichier JQuery téléchargé depuis
- Sélecteur JQuery : Correspond à un sélecteur CSS utilisé pour interroger (ou rechercher) des éléments HTML.
- Action JQuery : Correspond à une action à effectuer sur le(s) élément(s) sélectionné(s).
- ĂvĂ©nement
ready: ĂvĂ©nement de l'objetdocumentqui permet d'empĂȘcher l'exĂ©cution du code jQuery avant la fin du chargement complet du document. - ChaĂźnage (Chaining) : Technique permettant d'exĂ©cuter plusieurs actions JQuery l'une aprĂšs l'autre (dans la mĂȘme ligne ou sur des lignes diffĂ©rentes), sur le mĂȘme Ă©lĂ©ment.
- Plugin JQuery : Un code Ă©crit dans un fichier JavaScript standard qui fournit des mĂ©thodes jQuery utiles pouvant ĂȘtre utilisĂ©es avec les mĂ©thodes de la bibliothĂšque jQuery. Ils permettent d'Ă©tendre les fonctionnalitĂ©s offertes par JQuery.
2. Syntaxes & Codes
- Référencer JQuery (Téléchargement) :
<head> <script src="jquery-3.5.1.min.js"></script> </head> - Référencer JQuery (CDN Google) :
<head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> - Syntaxe de base JQuery :
$(sélecteur).action()$()est un raccourci pour la fonctionjQuery().
- Syntaxe de l'événement
ready:$(document).ready(function(){ // Méthodes jQuery... }); - Syntaxe du chaßnage (une ligne) :
$("#p1").css("color", "red").slideUp(2000).slideDown(2000); - Syntaxe du chaĂźnage (plusieurs lignes) :
$("#p1").css("color", "red") .slideUp(2000) .slideDown(2000); - Intégrer un plugin JQuery :
<script src="jquery.plug-in.js" type="text/javascript"></script>
3. Attributs & Propriétés
removeAttr(attribut): Méthode JQuery qui supprime un attribut spécifié d'un élément.- Exemple :
removeAttr("href")supprime l'attributhref.
- Exemple :
attr(attribut, valeur): Méthode JQuery qui ajoute ou modifie un attribut avec une valeur spécifiée.- Exemple :
attr("href", "https://www.google.com/")ajoute ou met Ă jour l'attributhref.
- Exemple :
4. Exemples Pratiques
- Sélection d'éléments :
$(this).hide(): masque l'élément courant.$("p").hide(): masque tous les éléments<p>.$(".test").hide(): masque tous les éléments avecclass="test".$("#test").hide(): masque l'élément avecid="test".
- Désactiver un lien
href:<head> <meta charset="utf-8"> <title>Désactiver un lien</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".menu a").each(function(){ if($(this).hasClass("disabled")){ $(this).removeAttr("href"); } }); }); </script> </head> <body> <ul class="menu"> <li><a href="https://www.ofppt.ma/">Lien1</a></li> <li><a href="https://www.ofppt.ma/">Lien2</a></li> <li><a href="https://www.ofppt.ma/" class="disabled">Lien3</a></li> </ul> </body> - Activer un lien
href:<!-- Le HTML change pour le lien 3 --> <li><a class="disabled">Lien3</a></li> <!-- Le script change pour utiliser attr() --> <script type="text/javascript"> $(document).ready(function(){ $(".menu a").each(function(){ if($(this).hasClass("disabled")){ $(this).attr("href","https://www.google.com/"); } }); }); </script> - ĂvĂ©nements JQuery :
- click() :
$("p").click(function(){ // actions de lâĂ©vĂšnement $(this).hide(); }); - dblclick() :
$("p").dblclick(function(){ $(this).hide(); }); - mouseenter() :
$("#p1").mouseenter(function(){ alert("Vous ĂȘtes sur le paragraphe p1!"); }); - mouseleave() :
$("#p1").mouseleave(function(){ alert("vous avez quitté le paragraphe p1!"); });
- click() :
5. Spécifications Techniques
- Sélecteurs : JQuery utilise la syntaxe des sélecteurs CSS pour trouver des éléments.
- Compatibilité : JQuery est conçu pour fonctionner sur une large gamme de navigateurs web.
- Plugins : L'intégration se fait via une balise
<script>aprĂšs la balise de JQuery. Le site officiel pour les plugins esthttps://jquery.com/plugins.
6. Points Critiques
- Importance de
$(document).ready(): Il est crucial d'encapsuler le code JQuery dans cet événement pour éviter les erreurs sur des éléments non encore chargés dans le DOM. Des actions comme masquer un élément ou obtenir la taille d'une image peuvent échouer si elles sont exécutées avant le chargement complet. - Différence entre
$()etjQuery():$()est simplement un alias (raccourci) pourjQuery(). - ChaĂźnage : Permet d'appliquer plusieurs mĂ©thodes au mĂȘme ensemble d'Ă©lĂ©ments JQuery sans avoir Ă resĂ©lectionner l'Ă©lĂ©ment Ă chaque fois, ce qui rend le code plus concis et performant.
Chapitre 2 : Découvrir AJAX (Pages 225-248)
1. Concepts & Définitions
- AJAX : Acronyme de « Asynchronous JavaScript And XML ». C'est une technologie basée sur :
- Un objet
XMLHttpRequestintégré au navigateur (pour demander des données à un serveur Web). - JavaScript et DOM HTML (pour afficher les données).
- Un objet
- Objectifs d'AJAX :
- Lire les données d'un serveur web (aprÚs le chargement d'une page web).
- Mettre Ă jour une page web sans la recharger.
- Envoyer les données à un serveur web (en arriÚre-plan).
- Objet
XMLHttpRequest(XHR) : Objet qui permet dâenvoyer des requĂȘtes HTTP au serveur, de recevoir des rĂ©ponses et de mettre Ă jour la page Web. En mode asynchrone, la mise Ă jour se rĂ©alise sans recharger la page. XMLHttpRequest.readyState: PropriĂ©tĂ© qui renvoie lâĂ©tat dâun client XMLHttpRequest.- Fonction de rappel (Callback) : Une fonction passĂ©e en paramĂštre Ă une autre fonction. UtilisĂ©e pour exĂ©cuter du code aprĂšs la fin d'une opĂ©ration asynchrone.
- Méthode
jQuery.ajax(): Fournit les fonctionnalitĂ©s de base d'Ajax dans jQuery. Elle envoie des requĂȘtes HTTP asynchrones au serveur.
2. Syntaxes & Codes
- Création d'un objet XMLHttpRequest :
variable = new XMLHttpRequest(); - Envoyer une demande (XHR natif) :
open(method, url, async) - Syntaxe de la méthode
jQuery.ajax():$.ajax(url, [options]); - Syntaxe de la méthode
jQuery.get():$.get(url, [données], [rappel]); - Syntaxe de la méthode
jQuery.getJSON():$.getJSON(url, [données], [rappel]); - Syntaxe de la méthode
jQuery.post():$.post(url, [données], [rappel], [type]); - Syntaxe de la méthode
jQuery.load():$.load(url, [données], [rappel]);
3. Attributs & Propriétés
- Propriétés de l'objet
XMLHttpRequest:onreadystatechange: DĂ©finit une fonction Ă appeler lorsque la propriĂ©tĂ©readyStatechange.readyState: Contient le statut de XMLHttpRequest (valeurs de 0 Ă 4).responseText: Renvoie les donnĂ©es de rĂ©ponse sous forme de chaĂźne.responseXML: Renvoie les donnĂ©es de rĂ©ponse sous forme de donnĂ©es XML.status: Renvoie le numĂ©ro d'Ă©tat d'une requĂȘte (ex: 200, 403, 404).statusText: Renvoie le texte d'Ă©tat (ex: "OK" ou "Not Found").
- Méthodes de l'objet
XMLHttpRequest:new XMLHttpRequest(): CrĂ©e un nouvel objet XMLHttpRequest.abort(): Quitte la requĂȘte courante.getAllResponseHeaders(): Retourne toutes les informations du header.getResponseHeader(): Retourne une information spĂ©cifique du header.open(method, url, async, user, psw): SpĂ©cifie la requĂȘte.send(): Envoie la requĂȘte au serveur (utilisĂ© dans les requĂȘtes GET).send(string): Envoie la requĂȘte au serveur (utilisĂ© dans les requĂȘtes POST).
- Options de la méthode
jQuery.ajax():contentType: Type de contenu MIME. DĂ©faut:"application/x-www-form-urlencoded; charset=UTF-8".data: DonnĂ©es Ă envoyer (objet JSON, chaĂźne, tableau).dataType: Type de donnĂ©es attendues du serveur.error: Fonction de rappel si la requĂȘte Ă©choue.global: BoolĂ©en pour dĂ©clencher les gestionnaires Ajax globaux. DĂ©faut:true.headers: Objet de paires clĂ©/valeur d'en-tĂȘtes supplĂ©mentaires.statusCode: Objet JSON de codes HTTP et fonctions associĂ©es.success: Fonction de rappel si la requĂȘte rĂ©ussit.timeout: DĂ©lai d'expiration en millisecondes.type: Type de requĂȘte (POST, PUT, GET). DĂ©faut:GET.url: URL de la demande.username: Nom d'utilisateur pour l'authentification HTTP.password: Mot de passe pour l'authentification HTTP.
4. Exemples Pratiques
- Utilisation de
onreadystatechange:xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt", true); xhttp.send(); - Envoyer une demande Ajax simple avec jQuery :
$.ajax('/jquery/getdata', { success: function (data, status, xhr) { $('p').append(data); } }); // HTML: <p></p> - Obtenir des données JSON avec
ajax():$.ajax('/jquery/getjsondata', { dataType: 'json', // type des donnĂ©es de la rĂ©ponse timeout: 500, // dĂ©lai dâexpiration en milliseconds success: function (data, status, xhr) { // fonction callback en cas de succĂšs $('p').append(data.firstName + ' ' + data.middleName + ' ' + data.lastName); }, error: function (jqXhr, textStatus, errorMessage) { // cas dâerreur $('p').append('Error: ' + errorMessage); } }); // HTML: <p></p> - Envoyer une requĂȘte POST avec
ajax():$.ajax('/jquery/submitData', { type: 'POST', // Méthode POST data: { myData: 'Mes données.' }, // données à envoyer success: function (data, status, xhr) { $('p').append('status: ' + status + ', data: ' + data); }, error: function (jqXhr, textStatus, errorMessage) { $('p').append('Error' + errorMessage); } }); // HTML: <p></p> - Utilisation de
$.get():$.get('/data.txt', // url function (data, textStatus, jqXHR) { // success callback alert('status: ' + textStatus + ', data:' + data); }); - Utilisation de
$.load()pour charger un fragment de page :// HTML cible <div id="msgDiv"></div> // Code JQuery $('#msgDiv').load('/demo.html #myHtmlContent'); // Contenu de /demo.html <!DOCTYPE html> <html> <head><title></title></head> <body> <h1>Page html.</h1> <div id="myHtmlContent">This is my html content.</div> </body> </html>
5. Spécifications Techniques
- Ătats
readyState:0: RequĂȘte non initialisĂ©e.1: Connexion au serveur Ă©tablie (open()a Ă©tĂ© invoquĂ©e).2: RequĂȘte reçue.3: RequĂȘte en cours de traitement.4: RequĂȘte terminĂ©e et rĂ©ponse prĂȘte.
- Statuts HTTP courants :
200: "OK"403: "Forbidden"404: "Not Found"
- RequĂȘtes POST : Pour envoyer des donnĂ©es via POST, il faut utiliser
setRequestHeader("Content-type", "application/x-www-form-urlencoded")avec XHR natif. JQuery le fait automatiquement.
6. Points Critiques
- Condition de succĂšs AJAX : La condition
readyState == 4 && status == 200est fondamentale. Elle garantit que la requĂȘte est terminĂ©e (4) et qu'elle a rĂ©ussi (200). - Asynchrone vs Synchrone : Les requĂȘtes doivent ĂȘtre envoyĂ©es de maniĂšre asynchrone pour ne pas bloquer l'interface utilisateur.
$.load()et sĂ©lecteur : Si aucun Ă©lĂ©ment n'est trouvĂ© par le sĂ©lecteur de la mĂ©thodeload(), la requĂȘte Ajax ne sera pas envoyĂ©e du tout.- Rappel
getJSON()vsget():getJSON()est spécifique à la récupération de données au format JSON, tandis queget()peut récupérer tout type de données.