traitement asynchrone javascript et ecriture dans fichier en php
Posté : 16 avr. 2019, 12:01
j’étudie la notion de javascript et de traitement asynchrone.
en PHP je crée une page qui affiche une liste de 20 entiers chacun entre deux balises <b></b>
en javascript je parse la page web pour récupérer les nombres
j’écris chaque nombre à la suite dans un fichier en appelant xhr.open("GET", "write_entree.php?entree="+ sentree +"&fichier=" + sfichier, true);
le retour dans la console indique bien un état 4 pour les 20 valeurs
mon soucis est que le fichier créé ne contient pas les 20 valeurs ( c'est aléatoire)
j'ai par exemple :1,6,2,4,8,9,5,10,13,12,14,16,15,18,20,19
il manque 3,7,11,17 par exemple.
Serait-ce un soucis d'écriture dans le fichier et comment le traiter?
merci pour votre aide.
et le fichier ecriture en php:
en PHP je crée une page qui affiche une liste de 20 entiers chacun entre deux balises <b></b>
en javascript je parse la page web pour récupérer les nombres
j’écris chaque nombre à la suite dans un fichier en appelant xhr.open("GET", "write_entree.php?entree="+ sentree +"&fichier=" + sfichier, true);
le retour dans la console indique bien un état 4 pour les 20 valeurs
mon soucis est que le fichier créé ne contient pas les 20 valeurs ( c'est aléatoire)
j'ai par exemple :1,6,2,4,8,9,5,10,13,12,14,16,15,18,20,19
il manque 3,7,11,17 par exemple.
Serait-ce un soucis d'écriture dans le fichier et comment le traiter?
merci pour votre aide.
Code : Tout sélectionner
<html>
<body>
<?php
for ($i=1;$i<=20;$i++) echo ("<b>".$i."</b>");
$fic=date('d-m-Y-H-i-s');
?>
<script type="text/javascript">
function getXMLHttpRequest() { ...}
function request(entree,fic) {
var xhr = getXMLHttpRequest();
var sentree = encodeURIComponent(entree);
var sfichier = encodeURIComponent(fic);
xhr.open("GET", "write_entree.php?entree="+ sentree +"&fichier=" + sfichier, true);
xhr.onreadystatechange = function() {
if (xhr.readyState==4 &&(xhr.status == 200 || xhr.status == 0)) {
n++;
console.log("valide=",xhr.status,xhr.readyState,xhr.responseText,n);
}else{
console.log("invalide=",xhr.status,xhr.readyState,xhr.responseText);
}
}
xhr.send(null);
}
fic="<?php echo $fic;?>";
xhr=getXMLHttpRequest() ;
n=0;
var x = document.getElementsByTagName("b");
for (i = 0; i <x.length; i++) {
entree=x[i]["innerText"];
request(entree,fic)
}
</script>
</body>
</html>
Code : Tout sélectionner
<?php
if (isset($_GET["fichier"]) )
{
$fic=$_GET["fichier"].".txt";
}else{
$fic='erreur.txt';
}
if (isset($_GET["entree"]) )
{
$entree=$_GET["entree"];
} else
{
$entree="rien";
}
if ($file = fopen($fic, "a+")) {
fwrite($file,$entree."\r\n");
fclose($file);
}
else
{
echo "PROBLEME!!!!";
}
?>
]