Avec les sélecteurs jQuery, sélectionner un élément HTML n’a jamais été aussi facile. Mais ce que l’on oublie souvent c’est que le moteur des sélecteurs de jQuery fonctionne sur les DOM et donc on peut utiliser toutes les méthodes de jQuery avec du XML !
Le but étant de récupérer un fichier XML avec de l’AJAX pour ensuite afficher ce que nous retourne le XML. Dans un premier temps, nous allons écrire la requête AJAX pour récupérer le XML:
$('.getCourses').click(function(){
$.ajax({
type: "GET",
url: "courses.xml",
dataType: "xml",
complete : function(data, status) {
var products = data.responseXML;
}});
});
Voici le fichier XML :
< ?xml version="1.0" encoding="UTF-8"?>Eau 10€ Pain 0.70€ Gateaux 5€
Maintenant il faut voir pour le parsing et l’affichage des données du fichier XML. Comme dis précédemment, nous allons pouvoir utiliser les méthodes .attr() , .find() etc de jQuery. Et vous allez voir, ça simplifie la vie .
Plaçons nous dans la méthode de réponse complete de l’AJAX et ajoutons :
var appendHtml = "";
$(products).find('product').each(function(){
var id = $(this).attr('id');
var name = $(this).find('name').text();
var price = $(this).find('price').text();
appendHtml += "<li>#"+id+" - <strong>"+name+"</strong> : "+price+"</li>";
});
$("#coursesList").append(appendHtml);
Il suffit ensuite d’ajouter une balise HTML et un bouton dans votre page pour afficher le rendu :
<button class="getCourses">Récupérer la liste des courses.</button> <ul id="coursesList" />
Je vous met à disposition la démonstration de ce tutoriel.
Plus j’utilise jQuery en tant que librairie par défaut plus je me rends compte que charger 19ko à chaque fois sur mes pages ne me dérange absolument pas. Et vous ? Qu’en pensez-vous ?
« Introduction à Drupal | Drupal: Installation du site »
2 trackbacks
6 commentaires
Victor Nicollet
20 août 2009 à 15:14
1Ce ne serait pas plus simple de récupérer du JSON, tout simplement?
Yotsumi
20 août 2009 à 20:05
2Même avis que Victor, si la source des données est sous notre contrôle, autant envoyer directement du json, qui sera directement évalué.
Mais dans certains cas, nous n’avons pas le choix ! ( api externe )
Clément
20 août 2009 à 20:29
3@Yotsumi: @Victor Nicollet: Tout a fait, le JSON est beaucoup plus légé que le XML mais je voulais montrer à quel point il était facile de manipuler du XML avec jQuery
Laurentb0204
13 septembre 2010 à 22:18
4Le code ci-dessus ne marche pas en local, j’ai créé une page html en faisant exactement les mêmes references, mais il ne fonctionne que sous FF. Sous les autres navigateurs il m’indique un parsererror (en statut), quelqu’un a une idée? (alors que sur le site ca fonctionne!
noki
24 novembre 2010 à 17:55
5Salut et merci pour ce code,
petite question, comment puis-je faire pour récupérer les trois variables pour les réutiliser dans une autre fonction. En l’état, si je ne me trompe pas, elles ne sont définies qu’ au sein de la fonction. Si je place un alert(prix) hors de la fonction, ça va me retourner un undefined, non ?
merpi
21 février 2011 à 12:32
6@noki:
Pour que cela marche avec d’autres navigateurs que FF, il faut travailler avec une serveur Web car JQuery se base (je pense) sur l’objet xmlHTTPRequest qui ne fonctionne en local qu’avec FF.
Laisser un commentaire
Devenir Fan de Dator.fr
Nuage de tags
Sponsors
Blogoliste
Blogs Amis
Derniers Posts
Derniers Commentaires
Les meilleurs sujets
Propulsé par WordPress