Bonjour, j'ai laissé un message dans le post a ddelec24, mais je ne voulais pas pourrir son sujet avec mon probleme...
donc je fais un nouveau post.
J'ai un peu avancé depuis tout a l'heure ... j'arrive a faire ce que je veux, j'ai compris comment AJAX fonctionne. Lorsque je clique sur un lien, je veux executer un script qui est assez long (40 secondes en moyenne), et pendant ce temps afficher une image de chargement.
Ca c'est fait et ca fonctionne a merveille. Le truc c'est que je veux afficher un compte a rebours de 40 secondes pour indiquer a l'utilisateur combien de temps il reste. Et ca ca fonctionne pas.
Je post de le forum AJAX car je fais appel a ce compte a rebours au moment ou j'affiche mon chargement ...
voila mon code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61 function merge_data() { var xhr=null; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } var Seconds_Counter = 40; // indiquez la durée du compte à rebours en secondes //les autres variables n'ont pas a etre modifiées// var Target_Time_Counter = new Date(); var Time_Beginn_Counter = Target_Time_Counter.getTime(); var Time_End_Counter = Time_Beginn_Counter + (Seconds_Counter*1000); Target_Time_Counter.setTime(Time_End_Counter); // variables inutilisée ds ce code, servant a un compte a rebours sur plusieurs années var m_Counter = Target_Time_Counter.getMinutes(); var s_Counter = Target_Time_Counter.getSeconds(); var fm_Counter = ((m_Counter < 10) ? "0" : "") + m_Counter + "min "; var fs_Counter = ((s_Counter < 10) ? "0" : "") + s_Counter + "sec"; var data = '<img src="../pictures/chargement.gif" alt="" /><br>Synchronizing... please wait...'; //on définit l'appel de la fonction au retour serveur xhr.onreadystatechange = function() { alert_ajax(xhr); }; // on affiche le chargement document.getElementById("merge_data").style.display = 'block'; function CountDown_Counter() { var Current_Date_Counter = new Date(); var Curren_tTime_Counter = Current_Date_Counter.getTime() var Open_Time_Counter = Math.floor((Target_Time_Counter-Curren_tTime_Counter)/1000); var s_Counter = Open_Time_Counter % 60; var m_Counter = ((Open_Time_Counter-s_Counter)/60) % 60; var fm_Counter = ((m_Counter < 10) ? "0" : "") + m_Counter + " min "; var fs_Counter = ((s_Counter < 10) ? "0" : "") + s_Counter + " sec"; var Time_Counter = fm_Counter + fs_Counter; var Output_String_Counter=Time_Counter; document.getElementById("td_filled").innerHTML= data + "<br>Time estimation : " + Output_String_Counter; window.setTimeout("CountDown_Counter",1000); } CountDown_Counter(); //on appelle le fichier reponse.txt xhr.open("GET", "script_merge_data_new.php", true); xhr.send(null); }
l'appel de la fonction qui permet de decompter les seconde ne se fait qu'une seule fois. Ensuite j'ai une erreur dans la console FireFox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <body> [...] <td id="td_filled" style="padding:3px;height:400px;text-align:center;vertical-align:middle"></td> [...] </body>
la ligne 59 correspond au setTimeOut()
je ne sais pas d'ou ca vient ...
j'ai essayé :
ca ne change rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 window.setTimeout("CountDown_Counter",1000); et window.setTimeout("CountDown_Counter()",1000);
Merci pour votre aide
Partager