- Fil d'ariane : Accueil du devBlog
- / Détail du billet (Lien direct)
Avec la classe XHRConnection, gérez l'objet XMLHttpRequest
Je suis actuellement en train d'écrire un tutorial pour la gestion d'un agenda en PHP. Désirant apporter un plus au niveau de l'interface d'administration, je me suis naturellement retourné vers les techniques en vogue actuellement : AJAX. Jusqu'à présent j'utilisais la fonction mise à disposition par Qwix et qui m'a permit de faire un Google Suggest Like ou encore un formulaire de création de requête HTTP.
Pour mon interface d'administration j'avais besoin d'aller un peu plus loin et j'ai donc réalisé cette petite classe de gestion de l'objet XMLHttpRequest que j'ai nommé XHRConnection.
La classe XHRConnection
Avant de voir de plus près la classe, je vous invite à lire une très bonne introduction sur la gestion des classe en Javascript ici
XHRConnection propose les méthodes suivantes:
- ref XHRConnection (boolean debug)
- Le constructeur. Si vous voulez spécifier le débuggage, passez true en paramètre.
- void setDebugOn ()
- Active l'affichage des exceptions
- void setDebugOff ()
- Désactive l'affichage des exceptions
- void resetData ()
- Permet d'initialiser la variable contenant les données à envoyer
- void appendData (string pfield, string pvalue)
- Permet d'alimenter les données à envoyer, accepte un nom de variable et une valeur.
- boolean sendAndLoad (string url, string httpMode [, ref callBack])
- Envoi des informations à la page url en utilisant la méthode HTTP httpMode
Seules deux méthodes sont obligatoires: XHRConnection() et sendAndLoad(). Si vous voulez envoyer des données il conviendra d'utiliser appendData(). Le paramètre callBack permet d'indiquer quelle fonction javascript doit être appelée lorsque la transaction est terminée. Elle n'est pas obligatoire. Comme décrite dans la liste des fonctions, le mode debug permet d'afficher les exceptions, c'est à dire les erreurs durant l'exécution du script.
Ne pas oublier
La classe est téléchargeable ici: XHRConnection. Le lien contient également des exemples d'utilisations.
Voilà Enjoy ![]()
Commentaires
[#1] Commentaire rédigé le Jeudi 21 Avril 2005 à 18:11 par Dj ThuG
[#3] Commentaire rédigé le Jeudi 21 Avril 2005 à 19:42 par qwix
[#4] Commentaire rédigé le Vendredi 22 Avril 2005 à 00:16 par nosoucy
solo>Contrairement à des langages naturellement "Objets", le Javascript adopte une syntaxe très différente. Ainsi, il n'y a pas de mot clé class permettant d'encapsuler la déclaration des propriétés, la définition du constructeur et celles des méthodes
Le javascript est un langage à base de prototype tiré de la norme ECMA 262: http://www.ecma-international.org/publications/fil... comme l’actionscript et bien d’autre. Ce concept remontre lui aussi à très loin (+20ans), avec le langage de ‘frame’, langage d’acteur etc … Il est même plus objet que les langages class-based vu que tout est objet et qu’il n’y a pas ce niveau d’abstraction qui sont nos class. Bref tout ça pour dire que le ‘naturellement objet’ ne veux à mon sens rien dire …
Je m’excuse de cette réaction, c’est moi qui joue sur les mots et ça ne me ressemble pas mais c’est juste que je trouve dommage de voir que le class-based est devenue en sorte un "standard" et que dès que l’on sort de ce cadre ce n’est plus "naturelle".
Enfin sinon ce nom AJAX ça ressemble à un produit vaisselle
[#6] Commentaire rédigé le Vendredi 22 Avril 2005 à 12:14 par Dj ThuG
Ok je vois ce que tu veux dire, seulement ne pas fournir de méthode pour récupérer la réponse fait que l'on est obligé de connaitre les méthodes de ta classe (pour faire la connexion et l'envoi des données) + les propriétés "réponses" de l'objet XmlHttpRequest (pour affichage comme dans "Google Suggest Like" )..
Si jamais les données étaient envoyées d'une façon (pour par exemple réussir à passer le caractère `+` au serveur) qui fasse que la réponse doit être "décodée";
un peu comme "soap qui transfert les données via des enveloppes xml"; il faudrait alors dans la fonction callback savoir comment décoder la réponse (donc savoir quelle était cette façon particulière d'envoyer les données) et donc d'aller analyser la classe de connection pour pondre un algo de décodage...
Avec une méthode, l'utilisateur (celui qui code la fonction callback) n'a pas besoin de connaitre les mécanismes de XHRConnection..
Enfin c'est mon point de vu
Bonne journée
=)
[#8] Commentaire rédigé le Lundi 25 Avril 2005 à 16:51 par Arsenik
Juste une petite correction dans ta class bien utile :
ligne 66 :
remplacer : datas.length > 0
par : datas.length == 0
sinon la query-string est :
&texte=2data=3
au lieu de :
texte=2&data=3
Voila !
[#10] Commentaire rédigé le Mardi 26 Avril 2005 à 23:59 par marko_
J'avais lu il y a quelques mois sur le blog de "je ne sais plus qui" que 2005 serai l'année javascript, là je commence à comprendre pourquoi!
merki solo
[#11] Commentaire rédigé le Mardi 14 Juin 2005 à 10:58 par galex
Salut à tous les druides de XHR !
J'ai un pb qui me mange la tête: je fais mon petit script (open, send et toutim). Sous FF, mon appli PHP marche super bien, tipTop.
Mais sous IE 6.0, mon appli PHP ne reçoit RIEN dans $_REQUEST ni $_GET ni $_POST, AUCUN des paramètres CGI.
Ca vous cause-t-il ?
Merci déjà
L'ajout de commentaire a été désactivé pour ce billet.
Trackbacks
Pisteurs vers ce billet (trackbacks entrant)
Il n'y a pas encore de pisteurs pour ce billet.
Pistés par ce billet (trackbacks sortant)
Il n'y a pas encore de pisteurs effectué par ce billet.


J'ai télécharger ta classe JS et dans le but d'adapter le script "Google Suggest Like" pour qu'il utilise XHRConnection, j'ai dû rajouter la méthode suivante afin de pouvoir récupérer la réponse :
this.response = function() {
if ( !conn ) return null;
return ( arguments.length >= 1 && typeof( arguments[ 0 ] ) == 'boolean' && arguments[ 0 ] )
? conn.responseXML : conn.responseText;
}
.response() ou .response( false ) fournissent la version texte et .response( true ) fournit la version Xml (enfin en théorie)
=)