[AJAX] Impossible d'envoyer deux fois la même phrase.
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
Code:
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 sauvegarde.php
Code:
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;
}
?> |
Page ToutesLesPhrases.php
Code:
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");
?> |
Petites explications
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