Bonjour à tous,
j'ai besoin de récupérer dynamiquement une variable déterminé par un script js.
Je sais que pour cela il faut utiliser AJAX et je me rappelle vaguement du principe qui est de faire des requêtes HTTP. Mais honnêtement ça fait un petit bout de temps et je ne me rappelle plus du tout la marche à suivre.
Promis cette fois je la noterai quelque part =)
J'ai donc une fonction Js qui affiche un nombre de caractère contenu dans un fichier.
Hors je ne peux lire le fichier qu'en php, mais le nom du fichier à lire est déterminé par un select dynamique d'un formulaire.
Voici la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function quelFichier(){ var liste, nomFich; liste = document.getElementById("nomFichier"); nomFich = liste.options[liste.selectedIndex].text; //On a le nom du fichier et on veut l'envoyer à php avec AJAX //Quand php a reçu le nom du fichier et calculé le nb char, on l'affiche avec js nbChar(nb); //avec nb la valeur récupéré par AJAX }Au vu de ce que j'ai besoin j'ai l'impression qu'il faut que la requete ne soit pas asynchrone et donc que le code soit bloquant, cad qu'une fois le nom du fichier envoyé, on doit attendre la réponse du nombre de caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function nbChar(nb){ var texte="Le fichier contient: "+nb+" caractères"; document.getElementById('testFichier').innerHTML=texte; }
Merci d'avance pour votre aide !
EDIT: J'ai décidé de simplifier le problème et de ne pas récupérer le nombre de char avec ajax.
Je souhaite seulement envoyer les données à php qui doit travailler.
Dans mon js j'ai donc la requete AJAX (je suis allé voir dans l'outil de dev de google et la requête est bien exécuté).
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 function nbChar(){ var liste, nomFich; liste = document.getElementById("nomFichier"); nomFich = liste.options[liste.selectedIndex].text; var xhr; if (window.XMLHttpRequest) { xhr=new XMLHttpRequest(); } else { xhr=new ActiveXObject("Microsoft.XMLHTTP"); } xhr.open("GET", "./index.php?nomFichier="+nomFich,true); xhr.send(null); }
Je fais donc ma requête en appelant ma page avec le nom du fichier en paramètre.
Sa semble être ok.
Mon soucis c'est qu'en php je veux interpréter ce résultat dynamiquement.
J'ai donc ceci dans mon index.php qui est censé me calculer la valeur de cpt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $cpt=0; if(isset($_GET["nomFichier"])){ $filename=$_GET["nomFichier"]; //On a le nom du fichier, on compte combien de char $filename="./fichiers/uploads/".$filename; $monfichier = fopen($filename, 'r+'); while (false !== ($char = fgetc($monfichier))) { $cpt=$cpt+1; } } ?>
Et cette valeur je veux l'afficher sur la page, mais impossible d'y arriver...J'ai presque l'impression que je n'entre pas dans cette condition comme je ne vois rien changer sur la page, j'aimerais au moins pouvoir vérifier la valeur calculé par cpt si elle est calculée...
EDIT2: Décidément, il y a toujours du nouveau.
J'ai trouvé comment faire, je peux récupérer le texte via responseHTML, le problème c'est que ça renvoie TOUTE la page html, et donc si je veux récupérer seulement l'info dont j'ai besoin, je suis obligé d'utiliser une page à part dans laquelle il n'y aurait que l'information que je veux.
A ce moment là je peux la récupérer et la traiter dans ma page courante.
Je pense que ça marchera bien comme ça, mais du coup je me tape une page php qui ne sert qu'à être la cible de la requete ajax et qui ne servira à rien d'autre, je trouve ça pas top...peut-être y a t'il un moyen de récupérer seulement une partie de la page html en fonction des id ou autre ?
Encore désolé et merci pour l'aide^^
Partager