[AJAX] Fontion JS sans effet

Signaler
Messages postés
2
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
31 mars 2006
-
Messages postés
2
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
31 mars 2006
-
Salut à tous,

J'ai crée un ensemble de fonction JS (à partir de scripts trouvés un peu partout sur internet) dont le but est de charger un fichier XML et un fichier XSL puis de transformer le fichier XML grâce au XSL et d'afficher la transformation dans un bloc.

Voici mon code :
<html>

<head>

<title>Test 4</title>

<script type="text/javascript" language="javascript">

function transform(xml, xsl, id) {


try { /* Navigateur basé sur Gecko. */

if (window.XSLTProcessor) {

var fragment;

var xsltProcessor = new XSLTProcessor();


xsltProcessor.importStylesheet(xsl);

fragment = xsltProcessor.transformToFragment(xml, document);



var target = document.getElementById(id);

target.appendChild(fragment);

document.appendChild(target);

}


else if (window.ActiveXObject) { /* ActiveX pour Internet Explorer. */

var target = document.getElementById(id);

target.innerHTML = xml.transformNode(xsl);

}



}


catch (e) {

return e;

}

}











function serv_reponse() {


if (http_request.readyState == 4) {

if (http_request.status == 200) {




var xmldoc = http_request.responseXML;


}


else {

alert('Un problème est survenu avec la requête.');

}

}

}









function load_xml(url) {



http_request = false;



if (window.XMLHttpRequest) {

http_request = new XMLHttpRequest();


if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');

}


}


else if (window.ActiveXObject) {

try {

http_request = new ActiveXObject("Msxml2.XMLHTTP");

}


catch (e) {
try {

http_request = new ActiveXObject("Microsoft.XMLHTTP");

}


catch (e) {}

}

}



if (!http_request) {

alert('Impossible de créer une instance XMLHTTP');

return false;

}


http_request.onreadystatechange = serv_reponse;

http_request.open('GET', url, true);

http_request.send(null);



return http_request;

}











function load_file(xml_charger, xsl_charger, id) {



var xml = load_xml(xml_charger);

var xsl = load_xml(xsl_charger);


var fichier = transform(xml, xsl, id);

}

</script>

</head>





[# Faut que ca marche !]












</html>


Voici en quelques mots ce que j'essaye de faire :

1/. Au clik de la souris, la fonction "load_file" est appelée et elle a 3 arguments : l'adresse d'un fichier xml, l'adresse d'un fichier xsl et un l'id d'un bloc.

2/. Les fichiers XML et XSL sont chargés grâce à aux appels à la fonction "load_xml".

3/. La fonction "transform" est appelée afin de transformer le fichier XML en un ficher XHTML grâce au fichier XSL puis elle affiche le tout dans l'id du bloc.

Lorsque je clique sur le lien de ma page, rien ne se passe (Test), je vous demande donc votre aide pour faire fonctionner mon code.

Merci à ceux qui m'aideront,
LoK.

2 réponses

Messages postés
732
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
29 octobre 2007

Bonjour

Après une rapide lecture, il faut déjà mettre
fichier = transform(xml, xsl, id);
dans la fonction serv_reponse() qui est appelée de manière asynchrone, c'est à dire quand le serveur a fini d'envoyer la réponse, c'est à dire bien après (tout est relatif, bien sûr) l'appel de la fonction load_file.
De plus, attention aux var : ils déclarent une variable locale à la fonction dans laquelle elle est définie. Ici, ta fonction ne fait rien, mis à part t'alerter s'il y a eu un probleme, car ta variable fichier n'est connue que de la fonction serv_reponse.

autre chose :
au lieu de

alert('Un problème est survenu avec la requête.');
j'ai tendance à mettre :
alert("Erreur : " + http_request.status + "\n" + http_request.statusText);
ca aide pour savoir si le prob vient du serveur.

Cordialement
Roro webDev
Messages postés
2
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
31 mars 2006

Merci de m'aider.



Je suis pas très bon en Javascript donc je comprend pas tout ce que tu
as dit. Serais-ce possible que tu me montres précisement quelles lignes
sont à modifier ?