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