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 :

Fonction alert modifie responseText. Pourquoi ?


Sujet :

AJAX

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Fonction alert modifie responseText. Pourquoi ?
    Bonjour à tous,

    Néophyte en AJAX, j'ai développé le script ci-dessous (simplifié pour ce topic).
    L'idée est simple. Dans une page appelante, au click d'un bouton, je demande le contenu d'un autre fichier.
    Mais voilà que je rencontre un os. Un détail important à dû m'échapper lors de la lecture de la documentation.


    Voici le fichier "hello_world.php" appelé.


    Et voici le page appelante. Avec ce script, rien ne s'affiche dans la console.

    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
    <body>
       <button id="click_me">Click Me</button>
    </body>
     
     <script>
        var click_me =  document.getElementById('click_me');	
        click_me.addEventListener('click', function() {
     
            var xhr = new XMLHttpRequest();
            xhr.open('GET','hello_world.php');
            xhr.send(null);
            console.log(xhr.responseText);
     
         }, false);	
    </script>


    Mais si je fais précéder l'appel à la console d'un alert comme ci-dessous, la console affiche bien cette fois "<p>Hello World</p>". L'alert n'affiche rien quant à lui.
    Pourquoi le fait d'ajouter la fonction alert change la réponse dans la console ?

    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
    <body>
       <button id="click_me">Click Me</button>
    </body>
     
     <script>
        var click_me =  document.getElementById('click_me');	
        click_me.addEventListener('click', function() {
     
            var xhr = new XMLHttpRequest();
            xhr.open('GET','hello_world.php');
            xhr.send(null);
            alert(xhr.responseText);
            console.log(xhr.responseText);
     
         }, false);	
    </script>

    Enfin, quand j'essaye d'afficher le xhr au complet dans la console comme ci-dessous, tout est normal.
    Autrement dit, parmi toutes les propriétés du xhr qui s'affiche, ResponseText affiche bel et bien "<p>Hello World</p>".
    Pourquoi donc je ne peux pas accéder à xhr.responseText directement ?

    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
    <body>
       <button id="click_me">Click Me</button>
    </body>
     
     <script>
        var click_me =  document.getElementById('click_me');	
        click_me.addEventListener('click', function() {
     
            var xhr = new XMLHttpRequest();
            xhr.open('GET','hello_world.php');
            xhr.send(null);
            console.log(xhr);
     
         }, false);	
    </script>

    Je vous prie de m'excuser d'avance si ce sujet à déjà été traité. Je n'ai pas dû trouver les bons mots clé.
    Merci d'avance pour votre aide. Alex.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue sur Developpez.

    L'alert ne modifie pas le responseText, c'est une valeur en lecture seule. Ton problème, c'est parce que par défaut, la requête se lance en mode asynchrone, donc quand tu ne mets pas l'alert, la requête n'a pas encore reçu le retour du serveur quand tu faits l'affichage dans le log.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var xhr = new XMLHttpRequest();
            xhr.open('GET','hello_world.php', false); // Synchrone, ce qui n'est pas recommandé
            xhr.send(null);
            console.log(xhr.responseText);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function()
    {
         if (xhr.readyState == 4 ){
           if(xhr.status == 200){
             console.log(xhr.responseText);
         }
       }
    }
            xhr.open('GET','hello_world.php'); // Asynchrone
            xhr.send(null);

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup andry.aime et NoSmoking ! C'est parfait.
    Et oui, afficher une réponse qui n'existe pas encore c'est compliqué. Raaaa.
    Je passe le topic en résolu.

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

Discussions similaires

  1. requete fonction liste modifiable
    Par milielf dans le forum Requêtes et SQL.
    Réponses: 59
    Dernier message: 25/07/2006, 14h11
  2. Fonction Alert() et ajout
    Par JCD_31 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/06/2006, 15h48
  3. Probleme fonction alert
    Par vanou dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 30/05/2006, 12h57
  4. utilisation de la fonction alert
    Par phpaide dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/04/2006, 16h41
  5. Mise à jour Champ en fonction liste modifiable
    Par lito74 dans le forum Access
    Réponses: 2
    Dernier message: 30/01/2006, 14h37

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