Bonsoir,
Tout d'abord je précise que je suis un néophyte en Ajax.
Voici le problème en phase expérimentation :
J'ai des pages web à partir desquelles je peux proposer le téléchargement de différents fichiers, pour chaque page, lors du clic, j'ai une procédure en php qui réécrit pour le fichier concerné la mise à jour du compteur dans un fichier .txt. Jusqu'à présent la valeur contenue dans le fichier .txt était lue uniquement lors du chargement de la page concernée avec :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part <?include"telechargements/applications_tartampion.txt"?>
Mais évidemment jamais mise à jour lors du téléchargement.
Voulant rendre dynamique cette valeur, je me suis lancé avec Ajax.
Dans la page, j'indique évidement l'emplacement du fichier ajax.js et j'initialise la valeur concernée lors du chargement avec une des fonctions du fichier ajax.js, ici gestionClop() :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <head> <script type="text/javascript" src="./index_fichiers/ajax.js"></script> </head>] <body class="structure_default" onload="gestionClop();return false;">
Dans le page php lors du clic le compteur est incrémenté, le fichier est téléchargé et la valeur affichée doit être elle aussi incrémentée :
Code html : 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 <tbody> <tr> <td align="center" WIDTH="16%"><span style="font-size:3px;"><br> <a href=clic.php?url=applications/tartampion.zip <!-- Incrémentation du compteur concernant le fichier tartampion.zip --> onmouseup="gestionClop();return false;"> <!-- Récupération de la valeur du compteur dans le fichier applications_tartampion.txt --> <img src="index_fichiers/download.gif" alt="download.gif" ></a> <br><br></span> </td> <td align="center"> <table border="2" cellspacing="0" cellpadding="0" border cellpadding="0" bordercolor="red" WIDTH="100%"> <tbody> <tr> <td align="center"> <span style="font-size:6px;"><br></span> <a style="text-decoration:none; font-size:13px; color:#00ff00;" href=clic.php?url=applications/tartampion.zip <!-- Incrémentation du compteur concernant le fichier tartampion.zip --> onmouseup="gestionClop();return false;" <!-- Récupération de la valeur du compteur dans le fichier applications_tartampion.txt --> onmouseover="this.style.color='#f7c80d';this.style.textDecoration='underline'" onmouseout="this.style.color='#00ff00';this.style.textDecoration='none'"> <b>Cliquer ici pour démarrer le téléchargement</b> </a> <span style="font-size:6px;"><br> </span> </td> </tr> </tbody>
L'affichage de la valeur étant réalisé avec :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <b>Mise à jour</b> téléchargée <span id="reponse"></span> fois <br><br>
Or que se passe-t-il pour Opéra, Google Chrome, Firefox et IE 11 ?
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 var http; // Notre objet XMLHttpRequest function createRequestObject() { var http = null; // var http = 0; // var http; if (window.XMLHttpRequest || window.ActiveXObject) {// Mozilla, Safari, IE7 ... if (window.ActiveXObject) { // Internet Explorer 6 try { http = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { http = new ActiveXObject("Microsoft.XMLHTTP"); } } else { http = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return http; } function gestionClic() { http = createRequestObject(); http.open('GET', './mon-script.txt', true); http.onreadystatechange = handleAJAXReturn1; http.send(null); } function gestionClicClac() { http = createRequestObject(); http.open('GET', './mon-stock.txt', true); http.onreadystatechange = handleAJAXReturn2; http.send(null); } function gestionClop() { http = createRequestObject(); http.open('GET', './telechargements/applications_NinaPerf.zip.txt', true); http.onreadystatechange = handleAJAXReturn3; http.send(null); } function handleAJAXReturn1() { if (http.readyState == 4) { if (http.status == 200) { document.getElementById('resultat').innerHTML = http.responseText; } else { alert('Pas terrible tout cela avec gestionClic'); } } } function handleAJAXReturn2() { if (http.readyState == 4) { if (http.status == 200) { document.getElementById('stock').innerHTML = http.responseText; } else { alert('Pas terrible tout cela avec gestionClicClac'); } } } function handleAJAXReturn3() { if (http.readyState == 4) { if (http.status == 200) { document.getElementById('reponse').innerHTML = http.responseText; } else { alert('Pas terrible tout cela avec gestionClop'); } } }
- Au chargement initialisation correcte de la valeur du compteur.
- Lors du clic sur les liens de téléchargement :
- pour Opéra et Google Chrome le téléchargement est correct, l'affichage du compteur est mis à jour et il n'y a pas de message d'erreur ;
- pour IE 11 le téléchargement est correct, l'affichage du compteur est mis à jour parfois et parfois non mais il n'y a pas de message d'erreur ;
- pour Firefox le téléchargement est correct, l'affichage du compteur n'est pas mis à jour et il y a un message d'erreur "Pas terrible tout cela avec gestionClop".
Quelqu'un a-t-il une idée de ce qui peut provoquer une telle disparité de comportement ?
Merci par avance.
Partager