Problem ds ma fonction ajax

Résolu
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009 - 18 sept. 2009 à 12:10
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 27 sept. 2009 à 11:30
bonjour tout le monde
svp est ce que quelqu'un peut me dire c'est quoi le probleme dans ma fonction ajax,normalement cette derniére va permettre a des pages web de s'afficher d'une maniere cyclique .
l'url de ces pages sont enregistrés dans un fichier reponse.xml

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

window.onload=function()
{
  var docXML= xhr.responseXML;
  var it = docXML.getElementsByTagName("donnee")
  var nom=unescape(self.location.pathname).split('/');
  var pag=nom[nom.length-1];
  var sui=0;
//on fait juste une boucle sur chaque element "donnee" trouvé
for (i=0;i= it.length )
                          { sui=0; }
                              break;
                     }
                 }
setTimeout ( function(){ 
location.replace( it[sui].firstChild.data ); },3000 ); }

</code>

20 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 13:46
la syntaxe c'est :
élément.évènement=function() { ... };
non pas
élément.évènement=function(); { ... }
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 12:21
nous fûmes 2 à vous indiquer des pistes ! ici
pourquoi créer un nouveau message, sans même
essayer ce que nous proposions ????
"47" vous disait :
>>à mon avis, ça serait plutôt
>>xhr.open("GET", "reponse.php", true);

et moi :

>>var it = docXML.getElementsByTagName("donnee");
>>for ( var i=0; i>{ alert ( it[i].firstChild.nodeValue ); }
>>déjà... sans préjuger du reste
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 12:27
et sans voir ce que renvoie le php,
on ne peut être sûr de rien,
( déjà suggéré aussi )
on ne peut pas tester, et détecter des
erreurs à l'oeil, comme ça, je ne suis
pas assez costaud...
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 12:32
Re
non Bul c'est pas le meme message,celui la est un autre problème ds ma fonction ajax c'est pas l'interaction entre ajax et php , je viens d'ajouter une autre fonction qui permet l'affichage cyclique des page web et j'ai remplacé le fichier.php par un fichier.xml .
0

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

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 12:36
certes... j'avoue que je n'vais même pas lu !
comme vous n'aviez pas répondu sur l'autre....
handicapé nasal (**) : mes remarques restent les mêmes

(**) néanmoins.
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 12:37
oki bul ,
a vrai dire j'ai essayé :
>>xhr.open("GET", "reponse.php", true);
mais ce que vous m'avez proposer c'etait pas le cas, car j'ai meme pas bien compris ce que tu m'a proposer
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 12:45
si c'est une modif du précédent exemple
où vous remplacez du php par un xml,
déjà, c'est plus "sain", et on va pouvoir avancer

>>j'ai meme pas bien compris
déjà : vous utilisez it[sui].firstChild.data
et je vous disais : it[sui].firstChild.nodeValue

ensuite.. on peut voir ce .xml ? sinon
comment tester ?

et, en fin de boucle (?)
setTimeout ( function(){
location.replace( it[sui].firstChild.data ); },3000 ); }
vous remplacez donc la page actuelle
par "je ne sais quoi" de votre xml
vous êtes sûr que "sui" à la bonne valeur ?
nonobstant nodeValue à la place de data ?
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 13:04
jusqu'a maintenant je lance une des pages pour tester .
mon fichier xml c'est comme suit:

<?xml version="1.0"?>
<exemple>
<donnee>page1.html</donnee>
<donnee>page2.html</donnee>
<donnee>page3.html</donnee>
<donnee>page4.html</donnee>
</exemple>

>>vous êtes sûr que "sui" à la bonne valeur ?

voila la question c'est comment gérer le fichier xml .je vais chercher un peu
moi j'avais la fonction qui permet l'affichage cyclique sous forme d'une fonction javascript
dans laquelle est declaré un tableau qui contient les pages mais dans le but de pouvoir ajouter n'importe quel pages au tableau donc j'etait obliger de passer par ajax
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 13:11
vous ne savez pas debugger ???? (**)
je teste et, avec FF par exemple :
Erreur : syntax error
Fichier Source : file:...reponse.htm
Ligne : 13, Colonne : 40
Code Source :
xhr.onreadystatechange = function() ;
avec une flèche qui pointe le ;

pas été plus loin donc !!




(**)
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 13:15
>>comment gérer le fichier xml
j'ai mis quelques exemples sur CodesSources
ici pour un "simple"
on trouve aussi une doc abondante sur la toile
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 13:17
mais pour quoi dans mon avigateur FF ,n'affiche aucune erreur ??
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
18 sept. 2009 à 13:20
pas avec ce que vous nous montrez ?!?
j'ai testé avec FF, dernière version 3.5.3,
ce doit être pareil avec toutes ( ou presque )
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 13:23
apparament, j'ai crée une fonction ajax(), mais elle ne semble jamais appelée...
xhr.onreadystatechange = function() ;


la declaration n'est pas bonne
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
18 sept. 2009 à 13:59
oui merci
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
25 sept. 2009 à 16:52
bonjour tout le monde
Re
bul:je vous remercie infiniment de m'avoir aider ,grace a vous j'ai pu regler les 2 problemes.celui du xml et ma fonction ajax,
mais j'ai un autre souci
je vous explique ma fonction.js me permet l'affichage de plusieurs pages web dynamiques mais seulement les pages qui sont ds le meme dossier.
voici une partie du code
xhr.onreadystatechange = function() 

{

if (xhr.readyState 4 && (xhr.status 200 || xhr.status == 0)) 

{

   var docXML= xhr.responseXML;

           var it = docXML.getElementsByTagName("donnee")

           var nom=unescape(self.location.pathname).split('/');

           var pag=nom[nom.length-1];

           var sui=0;

   //on fait juste une boucle sur chaque element "donnee" trouvé

       for (i=0;i= it.length )

                          { sui=0; }

                              break;

                     }

            }

   setTimeout ( function() { location.replace( it[sui].firstChild.nodeValue); },1000 ); 



}

pour remedier a ce probléme j'ai fait ceci :
var nom=self.location.pathname;

           var sui=0;

   //on fait juste une boucle sur chaque element "donnee" trouvé

       for (i=0;i= it.length )

                          { sui=0; }

                              break;

                     }

            }

   setTimeout ( function() { location.replace( it[sui].firstChild.nodeValue); },1000 ); 


mais quand je test , j'ouvre n'importe qu'elle page oup une redirection automatique vers la premier page
svp si vous avez la moindre idée n'hesitez pas a m'aider
merci bien
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
26 sept. 2009 à 11:21
euh....
>> if ( it[i].firstChild.nodeValue ==nom )
ce ne serait pas plutôt pag ?


var xhr=null;
function ajax()
{
if (window.XMLHttpRequest)
{ xhr = new XMLHttpRequest(); }
else { if (window.ActiveXObject)
{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
}
xhr.onreadystatechange = function()
{ if(xhr.readyState == 4)
{ var sui=0;
var nom=self.location.pathname.split("/");;
var pag=nom[nom.length-1];
it=xhr.responseXML.getElementsByTagName("donnee");
for (var i=0; i= it.length )
{ sui=0; }
break;
}
}
setTimeout ( function() { location.replace( it[sui].firstChild.nodeValue); },1000 );
}
}
xhr.open("GET", "reponse.xml", true);
xhr.send(null);
}
ajax();
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
26 sept. 2009 à 11:30
crotte de biques, je sucras mes remarques ?

remarques :

_ c'est pour vous essayer à traiter du xml j'espère,
car mettre le nom des page dans un simple array
suffirait

_ j'utilise plutôt, pour du xml
IE :
new ActiveXObject('Microsoft.XMLDOM');
.onreadystatechange
xhr.load(fichier);
FF :
document.implementation.createDocument( '', '', null );
.onload
xhr.load(fichier);
pour les autres, effectivement, ce que vous faites :
new XMLHttpRequest();
.onreadystatechange
.open( 'GET', fichier, true );
.send( '' );

_ vous allez être obligé de mettre ce
script dans toutes les pages
j'aurais plutôt utiliser un index.html
qui afficherait page1.html...pagen.html
dans un iframe, mais bon, ce n'est que
mon avis et ça ne fait pas le moine
0
kate1910 Messages postés 39 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 26 septembre 2009
26 sept. 2009 à 13:47
Re
non bul ma fonction fonctionne sans aucun probléme avec des pages de ce genre par exemple:
http://localhost/page1.php
http://localhost/far.php
http://localhost/dari.html

mais le souci c 'est que si mes pages ne viennent pas du meme serveur par exemple si je voulais q'une page
http://www.9rayti.com/...
s'affiche avec les autres pages sachant que j'ai la source de cette page pour ajouter la linge :
<script type="text/javascript" src="function.js"></script>

c'est pour ca je me suis dit qu'il faut entrer l'url complet de la page dans la base de donnée et j'ai modifié da la fonction .js
var nom=self.location.pathname.split("/");
par
var nom=self.location.pathname;//l'url complet

et if ( it[i].firstChild.nodeValue ==pag )
par if ( it[i].firstChild.nodeValue ==nom )
mais ds ce cas ma fonction ne marche plus comme j'ai déja dit quand je teste j'observe une redirection automatique vers la premiere page que j'ai fait entrer de la table de ma base de donnée aussi que cette page continue a se recharger chaq 3000 seconde
alors ??
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
26 sept. 2009 à 17:01
ce que j'ai mis en exemple, à
partir du votre, fonctionne.

si les pages sont sur un site différent,
"suffit" de l'ajouter
soit dans le replace :
location.replace( "http://site voulu/.../..."+it[sui].firstChild.nodeValue);
soit dans le xml
<donnee>http://site voulu/.../...page#.html</donnee>

ça dépend aussi de comment le script est appelé
soit avec un bouton soit avec setTimeout
sinon si c'est au onload une fois la page
chargée, elle appelle immédiatement la suivante

faites donc un essai en local, uniquement
avec un texte significatif pour les pages
et le script, chez moi : ça baigne
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
27 sept. 2009 à 11:30
================== exemple 1 ===========

reponse.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<exemple>
<donnee>page1.html</donnee>
<donnee>page2.html</donnee>
<donnee>page3.html</donnee>
<donnee>page4.html</donnee>
</exemple>

page1.html

<script type="Text/JavaScript"
src="Fonction.js"></script>
page 1


page2.html

<script type="Text/JavaScript"
src="Fonction.js"></script>
page 2


page3.html

<script type="Text/JavaScript"
src="Fonction.js"></script>
page 3


page4.html

<script type="Text/JavaScript"
src="Fonction.js"></script>
page 4


Fonctions.js
var xhr=null;
if ( window.ActiveXObject )
{ xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
else { xhr = new XMLHttpRequest(); }
xhr.onreadystatechange = function()
{ if( xhr.readyState == 4 )
{ var nom=self.location.pathname.split("/");
var pag=nom[nom.length-1];
var it=xhr.responseXML.getElementsByTagName("donnee");
for ( var i=0; i

page2.html

page 2


page3.html

page 3


page4.html

page 4


index.html


<script>
var pagHTM =["page1.html","page2.html","page3.html","page4.html"];
var i=-1;
function affiche()
{ i++;
window.frames["ifr"].location.href=pagHTM[(i%pagHTM.length)];
setTimeout( affiche, 1000 );
}
affiche();
</script>


================== exemple 4 ===========
ou même comme ça, sans javascript !

page1.html

page 1
<meta http-equiv="Refresh" content="1; URL=page2.html" />


page2.html

page 2
<meta http-equiv="Refresh" content="1; URL=page3.html" />


page3.html

page 3
<meta http-equiv="Refresh" content="1; URL=page4.html" />


page4.html

page 4
<meta http-equiv="Refresh" content="1; URL=page1.html" />


================== il y a d'autres manières possibles, je pense,
mais c'est tout ce qui me vient sur le moment ===========
0
Rejoignez-nous