bonjour
je suis en train de programmer une application en javascript + ajax

j'ai d�ja lu les doc + parcouru le forum + google ( � en perdre la tete )

pour comprendre mon probleme, je souhaite faire une breve description de mon programme de test sans AJAX

Soit un objet A

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
 
//cette objet sert a gerer un div quelquonque
function A()
{
    this.id=0; // c'est une variable quelquonque
    this.getId=function(){ return id; } // renvoit la valeur de la variable
    this.update=function(pValue){ this.id=pValue; }
}
Soit un manager AJAX

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
function AJAX_MANAGER()
{
  this.tab=Array(); //tableau de nom de mes elements
 
  //fonction qui ajoute dynamiquement des objets au manager
  // j'utilise la fonction eval pour cela
  this.add=function(pName)
  { 
   eval("this."+pName+"=new "+"A();");
   //cela donne : this.pName=new A(); et l'execute bien
  }
 
//cette fonction met a jour tout les objet en memoire
  this.update=function()
  {
    for(var i=0;i < this.tab.length ; i++)
    {
       //evaluer l'objet avec sa methode update 
       eval("this."+this.tab[i]+".update("+i+");");
       //cela donne : this.Nomdelobjet.update(i);
    }
  }
}
ce morceau de code marche ( si j'ai bien tout recopier )

le probleme c'est quand j'ajoute de l'ajax dans la partie update
car le but est de mettre a jour tous les objet A() qui sont gerer par le manager de maniere dynamique

( pour cette je peut pas les mettres en dur dans mon manager )

si qqu'un connait un site un tuto ou une portion de code qui l'a d�ja fait peut il me le dire ??? et me d�crire un peu le code si il l'a compris ?

sinon je continue mon explication ...

Rajoutons de l'ajax


modifions donc la classe

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
function AJAX_MANAGER()
{
  this.tab=Array(); //tableau de nom de mes elements
 
    /* creer un objet xmlhttprequest */   
    var xhr = null;
    if (typeof XMLHttpRequest != 'undefined'){ 
       xhr =  new XMLHttpRequest(); 
    } 
    try { 
        xhr =  new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) { 
        try { 
            xhr =  new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch (e) {} 
    }
 
 //fonction qui ajoute dynamiquement des objets au manager
  // j'utilise la fonction eval pour cela
  this.add=function(pName)
  { 
   eval("this."+pName+"=new "+"A();");
   //cela donne : this.pName=new A(); et l'execute bien
  }
 
//cette fonction met a jour tout les objet en memoire
  this.update=function()
  {
      for(var i=0;i < this.tab.length ; i++)
      {
            xhr.onreadystatechange=function()
            {
                if (xhr.readyState == 4 && xhr.status == 200) 
                { 
                    eval("this."+this.tab[i]+".update("+xhr.responseText+");"); 
                }
 
            }
            xhr.open("GET", "http://google.fr", true); 
            xhr.send(null);
        }
        //bien sur on rappelle la fonction car les fenetre se mette a jour
        setTimeout("this.update()",1000);
    }
  }
}

voila alors cela ne marche pas car � l'int�rieur de la fonction

xhr.onreadystatechange=function()
{
if (xhr.readyState == 4 && xhr.status == 200)
{
eval("this."+this.tab[i]+".update("+xhr.responseText+");");
}

}


les variable semble comme inconnu et non utilisable
( il m'affiche qu'il n'ont pas de properties )

voila je peut vous �clairer si vous le souhaiter

cordialement mathieu