Trucsweb.com

Forum de discussion

 Forum « Programmation Javascript » (archives)

Re: XML et javascript (Ajax)

Envoyé: 16 septembre 2005, 8h54 par Oznog


Salut,

C'est effectivement possible depuis peut. On dit Ajax (Asynchronous JavaScript and XML). Asynchronous parceque cette technique permet de communiquer avec le serveur sans recharger la page.

Tout tourne autour de l'ouverture du document XML. Il suffit de donner le URL. Mais imagine effectuer l'opération après un "onclick" par exemple? Ça cause toute sorte de problèmes de sécurités notament au niveau des informations personnelles.

Donc, même si cette technique attendue est très puissante, on bloque encore les flux (streams) XML des serveurs distants. Alors l'intérêt en prend pour son rhume. Sinon, si ton XML est sur le même serveur ça fonctionne.

Maintenant Le magazine "Affaire" peut bien parler de solutions "simple" et "gratuites", c'est pas si simple que ça, justement quand tu veux manipuler les données.

1. Pour charger le XML et avoir sous la main des dizaines d'outils pour naviguer et manipuler l'arboressance tu dois utiliser deux objets. L'ActiveX "Microsoft.XMLDOM" pour IE et le nouveau "XMLHttpRequest" pour les autres.

var oXMLFlux = new XMLHttpRequest();
oXMLFlux.open("GET", "page.xsl", false);
oXMLFlux.send(null);

C'est tout. oXMLFlux contient tout le document et sa structure DOM.

Par exemple :
// Tout le code XML brut du document (comme copy en XSLT).
oXMLFlux.responseXML;

// Seulement contenu du document
oXMLFlux.responseText;
// Or donc
document.getElementById("unCalqueExemple").innerHTML = oXMLFlux.responseText;

Il y a aussi par exemple "getAllResponseHeaders" pour récupérer seulement l'en-tête http. Le "readyState" qui indique l'état de la connexion. Et même lui appliquer une transformation XSL avec "transformToFragment" (je n'ai jamais personnellement résusis, sans doute encore pour des raisons de sécurité) Etc etc...

Exemple à lire sur XML.com (http://www.xml.com/pub/a/2005/02/09/xml-http-request.html)

function loadXMLDoc(url)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
}
}
}

function processReqChange()
{
// only if req shows "complete"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
} else {
alert("There was a problem retrieving
the XML data:\n" + req.statusText);
}
}
}

2. Toi tu veux en plus naviguer et tester le nom et les valeurs des noeuds. La chose se complique. Un exemple passe toujours mais pour créer son code à partir d'une idée n'est pas à la porté de tous. tu as déjà une bonne introduction. Ensuite, sache que peut importe la technique d'ouverture, le résultat XML reste un document qui respecte la hiérarchie du DOM (XML DOM). Voir une bonne référence sur DevGuru "XMLDOM Quick Reference " (http://www.devguru.com/Technologies/xmldom/quickref/xmldom_intro.html).

Dans ton cas tu devra sans doute boucler le document, exemple simple :

for each oNoeud in oXMLFlux.documentElement.childNodes
document.write(oNoeud.nodename)
document.write(':'+oNoeud.text+'<br >')
next

Etc, etc,etc.

C'est déjà ça, bonne chance.

ciao
Oznog


Réponses

 sp spRe: XML et javascript (Ajax) yoh21/9/2005
Aucun médias sociaux
X

Trucsweb.com Connexion

X

Trucsweb.com Mot de passe perdu

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte