Affichage XML via Ajax d'une et une seule balise, dans ma page html

[Résolu]
Signaler
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour!

j'éssai depuis 3 jours de faire fonctionner le script qui aurait pour objectif d'afficher la balise n0num dans ma page web.
j'ai un premier script qui fonctionne pas mal, mais qui ne me permet d'appliquer des effets dessus ( type scriptaculo.us ), j'ai eu plusieurs avis, beaucoups disent que mon script est mauvais. le voici


function ajax(num)
{
    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
   
    
    //on appelle le fichier essai.xml
    xhr.open("GET", "contenu/essai.xml", true);
    
 //on définit l'appel de la fonction au retour serveur
    xhr.onreadystatechange = function() { alert_ajax(xhr,num); };
xhr.send(null);
}

function alert_ajax(xhr,num)
{

var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")

document.getElementById("text").innerHTML=items.item(num).firstChild.data;
if(xhr.readyState ==4){
if(xhr.status ==200 ){
document.getElementByID("text").innerHTML=xhr.responseXml;

}else{
document.getElementById("text").innerHTML="Error: returned status code" +xhr.status+" " +xhr.statusText;
}

};
xhr.open("GET", "contenu/essai.xml", true); 
xhr.send(null); 
}



voici mon html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xml:lang="fr">

<head>

  <title>Utilisation du CSS</title>

  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

  <link href="css/tupu.css" media="screen" rel="stylesheet" type"text/css" />

  <script type="text/javascript" src="script/code.js"></script>

  <script type="text/javascript" src="script/transit.js"></script>

</head>
























[javascript:ajax(1); 1ere]



[javascript:ajax(2); 2eme]



[javascript:ajax(3); 3eme]



[javascript:ouverture(this.getAttribute('href'),'text'); return false; 4eme]


[# Ma page 1]












tupuducultupuduucultupuducultuuduucult
upuduculuduucultupuduculuduucu
ltupuduculuduucultupuduculpuducultuul=



en faite c'est toi qui pue

et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?

et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent?et ta mere elle sent

StandaCreation : Création de sites Internet est une société de création de sites web.f ?


















</html>



ainsi que mon xml
<?xml version="1.0"?>

<donnee></donnee>
<donnee>"Salut Moi c'est babine!!"</donnee>
<donnee>je suis patronne de la société Sabine Bourbon</donnee>
<donnee>voila ce que je vous propose</donnee>
<donnee>mes menus</donnee>
<donnee>Ainsi que mon parfait avocat au cas ou</donnee>
<donnee>je ne sais pas quoi mettre</donnee>


<donnee>tu sais que t'es relou? pourquoi ca marche pas? ou marche de trop!</donnee>




j'espère vraiment avoir de l'aide je désespère un peu

merci d'avance pour vos réponses

21 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
Bonjour,

vous auriez pu éviter les grossièretés dans le texte
je trouve ça assez mal venu....

ensuite... pas mal d'erreurs,
pas tout regardé mais quelques unes :

déjà, le .xml n'a pas une structure correcte
essayez de l'ouvrir dans un navigateur quelconque
tous vous le diront
comme çà au moins :
<?xml version="1.0"?>
<tout>

<donnee></donnee>
<donnee>"Salut Moi c'est babine!!"</donnee>
<donnee>je suis patronne de la societe Sabine Bourbon</donnee>
<donnee>voila ce que je vous propose</donnee>
<donnee>mes menus</donnee>
<donnee>Ainsi que mon parfait avocat au cas ou</donnee>
<donnee>je ne sais pas quoi mettre</donnee>


<donnee>tu sais que t'es relou? pourquoi ca marche pas? ou marche de trop!</donnee>

</tout>

mais revoyez la 1ère ligne <?xml version="1.0"?>
et pourquoi plusieurs balises donnee ???
dans le même article ?

ensuite dans le javascript :
__ on trouve 2 fois
xhr.open("GET", "contenu/essai.xml", true);
xhr.send(null);
???
__ votre xhr.onreadystatechange devrait
être fait avant l'open
__ var items = docXML.getElementsByTagName("donnee")
euh? lequel il doit vous dire !
var items = docXML.getElementsByTagName("donnee")[index]

corrigez déjà cela

Cordialement
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
j'ai oublié :
if(xhr.readyState ==4){
if(xhr.status ==200 ){
doit être fait dans
xhr.onreadystatechange = function() {
avant d'appeler alert_ajax(xhr,num);
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

Merci beaucoup! je suis désolé pour le contenu un peu grossié... ca fait trois jours que je suis dessus et parfois je pete littéralement les plombs, il est vrai que j'aurai pu corriger.

j'ai tenter de faire les modifications que tu m'as indiqué, sans réussite, cela me donne :
function ajax(num)
{
    var xhr=null;
    
    if (window.XMLHttpRequest) { 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
   
     
 
 xhr.onreadystatechange = function() { 
if(xhr.readyState ==4){
if(xhr.status ==200 ){
alert_ajax(xhr,num);
}
}
 };
    //on appelle le fichier essai.xml
    xhr.open("GET", "contenu/essai.xml", true);
    //on définit l'appel de la fonction au retour serveur
xhr.send(null);
}

function alert_ajax(xhr,num){

var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")[index]
document.getElementById("text").innerHTML=items.item(num).firstChild.data;
document.getElementByID("text").innerHTML=xhr.responseXml;
document.getElementById("text").innerHTML="Error: returned status code" +xhr.status+" " +xhr.statusText;


}


mon xml :

je l'ai mit comme tu me l'as indiqué, en faite ce devrai-être articles avec un "S", donc je parle des articles ayant les "données".
<?xml version="1.0"?>

<tout>



<donnee></donnee>

<donnee>"Salut Moi c'est babine!!"</donnee>

<donnee>je suis patronne de la societe Sabine Bourbon</donnee>

<donnee>voila ce que je vous propose</donnee>

<donnee>mes menus</donnee>

<donnee>Ainsi que mon parfait avocat au cas ou</donnee>

<donnee>je ne sais pas quoi mettre</donnee>


</tout>



est-ce bon ?

merci encore pour ton aide! cordialement,
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>est-ce bon ?
je ne sais pas... faut tester pour voir.
et vous ? qu'en dites vous ? c'est bon ou pas ?
vous avez essayé ?
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

oui oui j'ai essayé, mais sans succès.

je pense qu'il y a un problème avec la fonction ajax(xhr,num){

elle me parait bizarre, "ai-je bien appliquer vos conseils?" était ce que j'entendais par "est-ce bon?"..

merci beaucoup,

cordialement,
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

je me demande par la même occasion, à quoi correspond l'"index"
de :

var items = docXML.getElementsByTagName("donnee")[index]


n'y aurait-il pas un ';' à la fin de cette commande?


merci encore
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
pas regardé bien loin, mis :
var items = docXML.getElementsByTagName("donnee")[index]
et que contient index ?
ça doit dire undefined !

il faut aussi debugger :
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
document.getElementById("text").innerHTML=
docXML.getElementsByTagName("donnee")[num]firstChild.nodeValue;

probablement déjaà, plus le reste ... ( pas testé )
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>ce devrai-être articles avec un "S",
>>donc je parle des articles ayant les "données"
bah....

<donnee>Salut Moi c'est babine!!
je suis patronne de la ....
...
</donnee>

sauf s'il fallait traiter plusieurs données
dans un article. mais bon, mettre plusieurs
fois la même balise dans le même ensemble...
faut voir, ça se justifie peut-être ? je doute.
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

bha en faite, le salut moi c'est babine, et je suis la patronne de la .... ne sont pas affiché sur la même page ... difficile à croire, mais c'est pourtant comme ca que je vois les choses, chaque article correspond à un lien différent. d'où la variable num passée en paramètre pour obtenir un article précis.

j'ai remplacer :
document.getElementById("text").innerHTML=items.item(num).firstChild.data;
par :
document.getElementById("text").innerHTML=docXML.getElementsByTagName("donnee")[num]firstChild.nodeValue;

ne fonctionne pas ...


si je remettais un :

if(xhr.readyState ==4){
if(xhr.status ==200 ){

dans alert_ajax(xhr,num){}

pour séparés les :
var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")[index]

les,
document.getElementById("text").innerHTML=docXML.getElementsByTagName("donnee")[num]firstChild.nodeValue;
document.getElementByID("text").innerHTML=xhr.responseXml;

du :

document.getElementById("text").innerHTML="Error: returned status code" +xhr.status+" " +xhr.statusText;


merci encore,

cordialement,
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

j'ai 3 alertes avec firebug:

"enabling javascript debugger to support console"
Effect is not defined
[Break on this error] new Effect.Morph(el, {\n
transit.js (line 4)
$ is not defined
function onclick(event) { $("text").hide(5); $("text").appear(); }(click clientX=323, clientY=174)2 (line 2)
[Break on this error] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML....org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r\n
1one.html# (line 1)
Permission denied for <http://tools.codes-sources.com> to call method Location.toString on <http://www.javascriptfr.com>.
javascript:ajax(1);()javascri...:ajax(1); (line 1)
[Break on this error] (no source for )
"Reload to activate window console"
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

bon j'ai enlever des choses et au final, j'ai cela comme erreur :

___________________________________________________________________________
missing ; before statement
[Break on this error] document.getElementById("text").inne...ame("donnee")[num]firstChild.nodeValue;\n


code.js (line 31)
___________________________________________________________________________
"Reload to activate window console"
___________________________________________________________________________

ajax is not defined
javascript:ajax(1);()
___________________________________________________________________________


auriez-vous une idée?

merci cordialement,
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
oulah....

new Effect.Morph(el, {
transit.js (line 4) $ is not defined
function onclick(event) { $("t....

c'est vous ça ?
vous utilisez une bibliothèque de fonctions ?
si oui ? : j'abandonne !!!!
je lisais je ne sais plus où de je ne sais plus qui
un ch'tiot commentaire :

il y a les méga-bibliothèques genre jQuery et consort,
dont les multiples extensions font tout ça et bien plus
encore, mais au prix d'un code "poids lourd" et d'un
sur-langage propriétaire à apprendre.



c'est toujours vous ?
ajax is not defined
javascript:ajax(1);()

erreur de syntaxe quelque part.

>>var items = docXML.getElementsByTagName("donnee")[index]
ça ne peut pas fonctionner !!!!
vous avez obligatoirement une erreur sur cette ligne

corrigez d'abord les erreurs, puis si cela ne
fonctionne toujours pas :
remettez nous l' EXTRAIT nécessaire de là
où vous en êtes
mais si vous utilisez une "bibliothèques de
fonctions", je ne pourrais plus vous aider, navré.
pour moi, c'est réservé à une élite,
dont je ne fais pas partie !
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

j'utilisais scriptaculous pour les effets, mais pour mieux arriver à afficher mon texte en premier, j'ai supprimer cette bibliothèque:

donc j'en suis à ça :






function alert_ajax(xhr,num){

var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")[index]
    document.getElementById("text").innerHTML=docXML.getElementsByTagName("donnee")[num]firstChild.nodeValue;
//	document.getElementById("text").innerHTML=items.item(num).firstChild.data;
document.getElementByID("text").innerHTML=xhr.responseXml;
document.getElementById("text").innerHTML="Error: returned status code" +xhr.status+" " +xhr.statusText;


}



qui je pense est la source de mon problème et surtout cette ligne-ci

var items = docXML.getElementsByTagName("donnee")[index]

je vais tenter de voir à quoi correspond l'index.
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

bon j'ai réussi à afficher quelque chose avec ce code ci pour alert_ajax(xhr,num){}

je ne sais pas si il est correct:

function alert_ajax(xhr,num){
var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee")
var etage = items.item(num).firstChild.data;
document.getElementById("text").innerHTML=etage;			
}


merci
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
ben oui...
déjà dit....
index est indéfini !

quand je vous montrais cela c'était "générique"

si vous tenez à utiliser une variable intermédiaire :
var items = docXML.getElementsByTagName("donne");
document.getElementById("text").innerHTML=items[num].firstChild.nodeValue;

ou donc sans la ligne var items = ..[index]
qu'il faut supprimer !!!!
document.getElementById("text").innerHTML
=
docXML.getElementsByTagName("donnee")[num].firstChild.nodeValue;

à la syntaxe près ( pas testé )
mais faites attention aux . ( points ) et autres !
[b]vous ne regardez pas la console d'erreur ou vous n'avez
pas activé le debogage : il y a des erreurs de syntaxe
dans ce que vous nous montrez
/b
Messages postés
10
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
17 juillet 2009

function alert_ajax(xhr,num){
var docXML= xhr.responseXML;
document.getElementById("text").innerHTML=docXML.getElementsByTagName("donnee")[num].firstChild.nodeValue; 
}

fonctionne, je n'ai pas d'erreur dans firebug juste :
GET http://127.0.0.1/babine/contenu/essai.xml
GET http://127.0.0.1/babine/contenu/essai.xml
200 OK
10ms	code.js (line 24)
ParamsHeadersPostPutResponseCacheHTML
Response Headers
Request Headers
<?xml version="1.0"?>
<tout>

<donnee></donnee>
<donnee>"Salut Moi c'est babine!!"</donnee>
<donnee>je suis patronne de la societe Sabine Bourbon</donnee>
<donnee>voila ce que je vous propose</donnee>
<donnee>mes menus</donnee>
<donnee>Ainsi que mon parfait avocat au cas ou</donnee>
<donnee>je ne sais pas quoi mettre</donnee>

</tout>


pourriez-vous m'indiquer ou vous voyez des erreurs?

merci encore
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
avec
function alert_ajax(xhr,num)
{ var docXML= xhr.responseXML;
alert(xhr.responseXML.getElementsByTagName("donnee")[num].firstChild.nodeValue);
}
ça m'affiche "je suis patronne de la societe Sabine Bourbon"
si je clique sur "1ere"



<script>
function ajax(num)
{ var xhr=null;
if (window.XMLHttpRequest)
{ xhr = new XMLHttpRequest(); }
else if (window.ActiveXObject)
{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
xhr.onreadystatechange = function()
{ if(xhr.readyState ==4){
if(xhr.status ==200 ){
alert_ajax(xhr,num);
}
}
};
xhr.open("GET", "essai.xml", true);
xhr.send(null);
}
function alert_ajax(xhr,num){
var docXML= xhr.responseXML;
alert(xhr.responseXML.getElementsByTagName("donnee")[num].firstChild.nodeValue);
}

</script>



[javascript:ajax(1); 1ere]


[javascript:ajax(2); 2eme]


[javascript:ajax(3); 3eme]


[javascript:ouverture(this.getAttribute('href'),'text'); return false; 4eme]

[# Ma page 1]






<?xml version="1.0"?>
<tout>

<donnee>"Salut Moi c'est babine!!"</donnee>
<donnee>je suis patronne de la societe Sabine Bourbon</donnee>
<donnee>voila ce que je vous propose</donnee>
<donnee>mes menus</donnee>
<donnee>Ainsi que mon parfait avocat au cas ou</donnee>
<donnee>je ne sais pas quoi mettre</donnee>


<donnee>tu sais que t'es relou? pourquoi ca marche pas? ou marche de trop!</donnee>

</tout>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
il vous reste à affiner et à adapter...
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
j'éviterais les liens...

1ere