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

JavaScript Discussion :

[AJAX] récupérer une valeur depuis responseText


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut [AJAX] récupérer une valeur depuis responseText
    Bonjour!
    Lorsque j'affiche mon xhr.responsetext ca me donne la valeur qui été inscrite dans ma page php.
    Par contre lorsque je fait reponse=whr.responsetext là rien ne se passe!
    Pourquoi?

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 169
    Points : 149
    Points
    149
    Par défaut
    reponse=whr.responsetext ==> reponse=xhr.responsetext plutot ?
    Cartes Pokémon, Yugioh, Magic ?
    Communauté d'échange

  3. #3
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    oui j'ai fait la faute en tapant mon sujet mais pas dans mon code!

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Ministar Voir le message
    Par contre lorsque je fait reponse=whr.responsetext là rien ne se passe!
    Si !
    Tu as affecté la chaine de caractères retournée par Ajax à la variable "reponse".
    Disons plutôt que rien ne se "voit"
    Mais tu peux ensuite utiliser cette variable (globale ?) pour traiter la réponse d'Ajax ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    pour eclairsir un peu les choses voici mon code :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function actualiser_info()
    {
      //Création de l'objet xhr-----------------------------------------------------
    var reponse="";  
    var xhr= null;
      if(window.XMLHttpRequest) // Firefox
      {  xhr= new XMLHttpRequest(); }
      else if(window.ActiveXObject) // Internet Explorer
      {  xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
      else
      { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
      }
      //----------------------------------------------------------------------------
    
      //Ouvre la connexion au serveur en précisant le type de données :
      xhr.open('GET','./script/actualisationminute.php',true);
      //On associe à une varible un contenue, ici pour le contenu de la page :
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    
      // On regarde les changement d'état de l'objet xhr
      xhr.onreadystatechange = function attente(){  // l'état est à 4, requête reçu !
                                                    if(xhr.readyState == 4)
                                                   { reponse=xhr.responseText; }
                                                 }
      // Envoi la requete xhr au serveur :
      xhr.send(null);
      //if(reponse=="roui")
      //{ window.location.replace("../../index.php"); }
    
      return;
    }
    Edit : le problème est que ca ne passe jamais dans ma condition et que lorsque j'affiche ma variable reponse dans un alert je n'ai aucun message!

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Il me semble que tu testais "reponse" au mauvais endroit.
    As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(xhr.readyState == 4)
    { reponse=xhr.responseText; 
      if(reponse=="roui")
          window.location.replace("../../index.php"); 
    }
    ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    2h de perdu pour une connerie comme ca, ca donne envie de programmer :p

    Je te remerci, c'était ça!!

    Par contre, pourquoi ca fonctionne comme cela et pas comme je l'avais fait avant?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Ministar Voir le message
    Par contre, pourquoi ca fonctionne comme cela et pas comme je l'avais fait avant?
    Entre autre parce que "reponse" est une variable locale (de ta fonction actualiser_info() )
    Or, du fait de l'appel asynchrone, lorsque ta fonction attente() sera exécutée, tu ne sera plus dans la fonction actualiser_info().

    De plus, tu testais "reponse" au moment de (enfin : immédiatement après) la déclaration de la fonction attente(), et non de son exécution.
    A ce moment là, Ajax n'avait pas encore répondu ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Merci!
    J'ai un autre problème (avec IE6 uniquement)
    Ca doit provenir du cache.
    En fait je fait une requête AJAX qui va interoger un fichier php pour faire resortir une liste d'utilisateur.
    Le fichier php est appellé toutes les 30 secondes.
    Pour Firefox tout va bien, l'actualisation des données se fait comme il faut par contre pour IE6 les résultats sont toujours les mêmes, aurait tu une idée pour remédier à ce problème?

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Ministar Voir le message
    Pour Firefox tout va bien, l'actualisation des données se fait comme il faut par contre pour IE6 les résultats sont toujours les mêmes, aurait tu une idée pour remédier à ce problème?
    Oui, il a été abordé dans le Contributions

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  11. #11
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Merci pour les infos!

    J'ai testé et ca ne change rien...
    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
    17
    18
    19
    20
    21
    22
    23
    24
    function liste_actif(num)
    {
      //Création de l'objet xhr-----------------------------------------------------
      var xhr= null;
      if(window.XMLHttpRequest) // Firefox
      {  xhr= new XMLHttpRequest(); }
      else if(window.ActiveXObject) // Internet Explorer
      {  xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
      else
      { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
      }
      //----------------------------------------------------------------------------
      xhr.open('GET','./script/listeactif.php?a='+num,true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      xhr.setRequestHeader("Cache-Control","no-cache");
      xhr.onreadystatechange = function attente(){
                                                    if(xhr.readyState == 4)
                                                    { document.getElementById('listeactif'+num).innerHTML=xhr.responseText; }
                                                 }
      xhr.send(null);
      return;
    }

  12. #12
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Ministar Voir le message
    xhr.setRequestHeader("Cache-Control","no-cache");
    Le header doit être mis sur la réponse (ce que le serveur renvoie) et non sur la requête....

  13. #13
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Ca doit être comme ceci?

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    function liste_actif(num)
    {
      //Création de l'objet xhr-----------------------------------------------------
      var xhr_liste= null;
      if(window.XMLHttpRequest) // Firefox
      {  xhr_liste= new XMLHttpRequest(); }
      else if(window.ActiveXObject) // Internet Explorer
      {  xhr_liste = new ActiveXObject("Microsoft.XMLHTTP"); }
      else
      { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
      }
      //----------------------------------------------------------------------------
      xhr_liste.open('GET','./script/listeactif.php?a='+num,true);
      xhr_liste.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      document.getElementById('listeactif'+num).setRequestHeader("Cache-Control","no-cache");
      xhr_liste.onreadystatechange = function attente(){
                                                    if(xhr_liste.readyState == 4)
                                                    {
                                                      document.getElementById('listeactif'+num).innerHTML=xhr_liste.responseText;
                                                    }
                                                 }
      xhr_liste.send(null);
      return;
    }
    Avec ce code je n'obtient aucunes réponses dans mon div...

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Ministar Voir le message
    Ca doit être comme ceci?
    Presque !
    Exactement comme dans le lien donné (cf. le 1) et le 2) de Fremy)
    Dans la fonction Ajax pour le 1)
    Directement dans "./script/actualisationminute.php" pour le 2)

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Exactement comme dans le lien donné (cf. le 1) et le 2) de Fremy)
    Il s'agit de 2 solutions différentes (1 client + 1 serveur), mais elle peuvent être cumulées ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Membre du Club Avatar de Ministar
    Inscrit en
    Septembre 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Septembre 2006
    Messages : 143
    Points : 56
    Points
    56
    Par défaut
    Merci de votre aide!
    Je vais tester la solution coté serveur qui me parait être la meilleur en cas de désactivation du javascript.

    Edit : La solution fonctionne à merveille! (je pense que ce n'est pas la dernière fois que je vous soliciterais :p) merci de votre aide!

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

Discussions similaires

  1. [ObjC] Récupérer une valeur depuis un scan dans une autre vue
    Par krm666 dans le forum Autres langages
    Réponses: 0
    Dernier message: 09/08/2012, 12h37
  2. Réponses: 2
    Dernier message: 19/04/2011, 02h58
  3. récupérer une valeur depuis un bouton radio
    Par masterPage dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/02/2010, 11h18
  4. Réponses: 10
    Dernier message: 22/08/2007, 18h07
  5. Réponses: 1
    Dernier message: 31/10/2006, 11h15

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