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
Soit un manager AJAX
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; } }
ce morceau de code marche ( si j'ai bien tout recopier )
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); } } }
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
Partager