Bonjour,
je teste pour la première fois un système de réception et d'envoie de données avec ajax.
Le problème est le suivant: Je n'arrive pas à envoyer deux fois la même phrase sous internet explorer 7. La version 6 et sous mozilla firefox aucun problème.
Je pense donc que le problème se situe au nivaux de la mise en cache mais j'ai déjà tenter de résoudre ce problème. Voyez vous-même.
Page index.php
Page sauvegarde.php
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 <script> function onKeyPressNumbers(e) { var key = window.event ? e.keyCode : e.which; if(key == 13){ save(document.getElementById('message').value); } var keychar = String.fromCharCode(key); reg = /\r/; // Permet de capturer un retour chariot. return !reg.test(keychar); } function AfficherPhrases(){ texte = file('ToutesLesPhrases.php'); document.getElementById('AfficherToutesLesPhrases').innerHTML = texte; } window.setInterval("AfficherPhrases()",1000); function save(data){ message.value = ""; message.focus(); file('sauvegarde.php?q='+escape(data)); } function file(fichier) { if(window.XMLHttpRequest) // FIREFOX xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else return(false); xhr_object.open("GET", fichier, false); xhr_object.send(null); if(xhr_object.readyState == 4) return(xhr_object.responseText); else return(false); } </script> <div id="AfficherToutesLesPhrases"></div> <textarea id="message" onkeypress="return onKeyPressNumbers(event);"></textarea>
Page ToutesLesPhrases.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <? if(isset($_GET['q']) and $_GET['q']!=""){ $filename = 'ToutesLesPhrases.php'; if (is_writable($filename)) { $handle = fopen($filename, "a"); fwrite($handle, $_GET['q']."<br>\n"); fclose($handle); }exit; } ?>
Petites explications
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <? // on empêche la mise en cache. header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); ?>
Les phrases écrites dans le textarea de la page index.php sont transmises à la page sauvegarde.php qui sert à écrire ce qui était dans le textarea dans le fichier ToutesLesPhrases.php et ainsi les faire apparaître à la page index.php avec une actualisation toutes les secondes.
J'ai tenté quelque procédés mais celui là semble le moins compliqué pour une démonstration claire du problème. Ainsi j'espère que vous pourrez tenter de comprendre ce qui ne va pas.
Merci d'avance.
J'insiste sur le fait que ce code fonctionne sous internet explorer 6 et firefox. Cela vous permettra peut-être de ne pas perdre du temps inutilement
Partager