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
A voir également:
Affichage XML via Ajax d'une et une seule balise, dans ma page html
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]
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);
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>
>>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.
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]
"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"
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);()
___________________________________________________________________________
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 !
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]
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;
}
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
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?
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);
}
<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>