IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Récupérer variable javascript dans php et inversément


Sujet :

AJAX

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Récupérer variable javascript dans php et inversément
    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
     
    }
    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;
    }
    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.


    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^^

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    La destination de la requête ajax doit être un fichier séparé qui va uniquement retourner le nombre de caractères de ton fichier que tu retourneras par un echo et que tu pourras exploiter dans le retour de ta requête ajax.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // On écoute les changements d'état de la requête ajax
    xhr.addEventListener('readystatechange', function() {
     
        // Si la requête est terminée et qu'il n'y a pas d'erreur 
        if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
     
            // Si tu as fais un echo dans ton script php tu retrouveras la réponse dans xhr.responseText. A exploiter comme tu veux
            alert(xhr.responseText); 
     
        }
     
    });

    EDIT Et en php il existe la fonction mb_strlen pour retourner directement le nombre de caractères, dans ton cas à utiliser conjointement avec la fonction file_get_contents pour récupérer le fichier sous forme d'une chaine de caractères.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Ok, c'est bien ce qu'il me semblait hier soir, j'ai pu faire comme ça, et ton message me l'a confirmé. Merci.

    Mais je trouve ça quand même dommage de devoir passer par une page à part juste pour ça, j'aurais pensé qu'il était possible de récupérer uniquement ce que l'on cherche dans une page complète. Il faut que j'arrête de rêver ahah =)

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Mais je trouve ça quand même dommage de devoir passer par une page à part juste pour ça, j'aurais pensé qu'il était possible de récupérer uniquement ce que l'on cherche dans une page complète. Il faut que j'arrête de rêver ahah =)
    C'est pas impossible de faire un script de destination Ajax commun à différentes requêtes et qui réponde différemment suivant les variables envoyées. Après le rêve peut aussi se transformer en cauchemar car cela peut finir par être compliqué/moins lisible et puis charger un gros script pour n'utiliser que quelques lignes n'est pas optimisé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer variable Javascript dans PHP
    Par smotte761 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/08/2011, 16h48
  2. Comment récupérer une variable javascript dans PHP
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 08/10/2010, 06h08
  3. Réponses: 2
    Dernier message: 05/05/2007, 23h11
  4. [PHP-JS] récupérer variable javascript vers php
    Par felix14 dans le forum Langage
    Réponses: 5
    Dernier message: 14/02/2007, 15h39
  5. [PHP-JS] recuperer une variable javascript dan php
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2006, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo