Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajax

Récupérer la valeur d'un xmlhttprequest

    11 octobre 2008 à 17:54:25

    Bonjour à tous,

    Je me base sur le tuto de Thunderseb sur l'Ajax.

    J'en arrive donc à appeler un xmlhttprequest qui load une page php qui renvoie un echo.

    J'aimerais pour récupérer la valeur en javascript pour l'intégrer dans une autre fonction.

    Le code qui appelle la fonction :

    <script type="text/javascript">
    <!-- 
    function sendData() {
            var xhr = getXMLHttpRequest();
     
            if(xhr && xhr.readyState != 0) {
                    xhr.abort(); 
            }
     
            xhr.onreadystatechange = function() { 
                    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                            document.getElementById("loading").innerHTML = "";
                            getData(xhr.responseText); 
                    } else if(xhr.readyState == 2 || xhr.readyState == 3) {
                            document.getElementById("loading").innerHTML = "<p>Chargement en cours</p>";
                    }
            }
     
            var pseudo = encodeURIComponent(document.getElementById("input_pseudo").value);
            var prenom = encodeURIComponent(document.getElementById("input_prenom").value);
            xhr.open("GET", "XMLHttpRequest_1.php?Pseudo=" + pseudo + "&Prenom=" + prenom + "", true);
            xhr.send(null);
    }
     
    function getData(sData) {
            alert(sData);
    }
    


    Donc à la place de alert(sData) qui fera une boite dialogue, j'aimerais récupérer la réponse de la requête ajax dans une variable et pouvoir la mettre en argument dans une autre fonction qui permettra par exemple de valider l'envoi d'un formulaire.

    Merci déjà pour vos réponses

    cwx
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 octobre 2008 à 18:24:12

      en faisant alert(sData);

      tu mets la réponse de la requête en argument d'une fonction.
      je vois pas où es ton problème
      • Partager sur Facebook
      • Partager sur Twitter
        12 octobre 2008 à 13:03:04

        Je l'avais compris mais je n'y arrive pas.
        Je te donne l'exemple que j'ai fait qui valide un formulaire de connexion :
        function getXMLHttpRequest() {
                var xhr = null;
         
                if(window.XMLHttpRequest || window.ActiveXObject) {
                        if(window.ActiveXObject) {
                                try {
                                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                } catch(e) {
                                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                }
                        } else {
                                xhr = new XMLHttpRequest();
                        }
                } else {
                        alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                        return null;
                }
         
                return xhr;
        }
        
        function sendData() {
                var xhr = getXMLHttpRequest();
         
                if(xhr && xhr.readyState != 0) {
                        xhr.abort(); 
                }
         
                xhr.onreadystatechange = function() { 
                        if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                                document.getElementById("loading").innerHTML = "";
                                getData(xhr.responseText); 
                        } else if(xhr.readyState == 2 || xhr.readyState == 3) {
                                document.getElementById("loading").innerHTML = "<p>Chargement en cours</p>";
                        }
                }
         
                var pseudo = encodeURIComponent(document.getElementById("pseudo").value);
                var mdp = encodeURIComponent(document.getElementById("mdp").value);
                xhr.open("GET", "traite.php?pseudo=" + pseudo + "&mdp=" + mdp + "", true);
                xhr.send(null);
        }
         
        function getData(sData) {
                if($Data == "ok")
        			return true;
        		else
        			return false;
        }
        
        function verif(f)
        {
        sendData();
        if(getData == true)
        	return true;
        else	
        	return false;
        }
        


        Et mtnt le code php de la page traite.php
        <?php 
        header("Content-Type: text/plain");
        $pseudo = $_GET['pseudo'];
        $mdp = $_GET['mdp'];
        if($pseudo == "creative" && $mdp == "error")
        	{
        		echo "ok";
        	}
        else
        	{
        		echo "pas ok";
        	}
        ?>
        



        Et bien tout ce que j'ai c'est Chargement en cours qui s'affiche

        Ici le lien de ma page : Page de test

        • Partager sur Facebook
        • Partager sur Twitter
          12 octobre 2008 à 21:23:42

          Moi ca marche, il m'envoie des trucs bizarre, mais il m'affiche des trucs.
          • Partager sur Facebook
          • Partager sur Twitter
            12 octobre 2008 à 21:28:45

            Oui en fait sur Firefox ca passe un petit peu.

            En fait j'ai du mettre un onclick sur le input submit et faire la soumission du formulaire dans le getData.
            Par contre mtnt j'essaye en post car je ne voulais pas voir les identifiants dans la barre d'adresse mais je les vois toujours

            Je mets un update de mon code :
            function getXMLHttpRequest() {
                    var xhr = null;
             
                    if(window.XMLHttpRequest || window.ActiveXObject) {
                            if(window.ActiveXObject) {
                                    try {
                                            xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                    } catch(e) {
                                            xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                    }
                            } else {
                                    xhr = new XMLHttpRequest();
                            }
                    } else {
                            alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                            return null;
                    }
                    return xhr;
            }
            
            function sendData() {
                    var xhr = getXMLHttpRequest();
             
                    if(xhr && xhr.readyState != 0) {
                            xhr.abort(); 
                    }
             
                    xhr.onreadystatechange = function() { 
                            if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                                    document.getElementById("loading").innerHTML = "Chargement terminé";
                                    getData(xhr.responseText);
                            } else {
                                    document.getElementById("loading").innerHTML = "<p>Chargement en cours</p>";
                            }
                    }
             
                    var pseudo = document.getElementById("pseudo").value;
                    var mdp = document.getElementById("mdp").value;
                    xhr.open("POST", "traite.php", true);
                    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                    xhr.send("pseudo="+pseudo+"&mdp="+mdp);
            }
             
            function getData(rep) {
            if(rep == "ok")
            	document.forms[0].submit();
            }
            


            Merci

            cwx
            • Partager sur Facebook
            • Partager sur Twitter

            Ajax

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown