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

Résolu
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 02:33
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 17 juil. 2009 à 15:23
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 10:39
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
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 10:41
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);
3
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 12:06
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,
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 12:17
>>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é ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 12:29
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,
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 12:34
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 12:37
pas regardé bien loin, mis :
var items = docXML.getElementsByTagName("donnee")[index]
et que contient index ?
ça doit dire undefined !

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

probablement déjaà, plus le reste ... ( pas testé )
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 12:50
>>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.
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 13:01
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,
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 13:09
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"
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 13:14
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,
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 13:34
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 !
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 13:59
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.
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 14:17
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 14:20
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
0
cs_yourchenko Messages postés 10 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 14:44
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 15:18
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>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 15:20
il vous reste à affiner et à adapter...
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 13
17 juil. 2009 à 15:22
j'éviterais les liens...

1ere
0