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 :

XMLHttpRequest : Impossible de récupérer les données


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut XMLHttpRequest : Impossible de récupérer les données
    Bonsoir,

    Je me lance avec XMLHttpRequest... Et là je bloque : Je récupère bien des données, mais avec toutes les balises ? Si j'applique innerHTML, bah ya plus rien

    le code de la fenêtre appelante :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <html>
    <script type="text/javascript" language="javascript">
    function makeRequest(url) {
     
        var http_request = null;
    //	http_request.overrideMimeType('text/xml');
    	var method="POST";
     
    	if(window.XMLHttpRequest) // Firefox 
    		http_request = new XMLHttpRequest(); 
    	else if(window.ActiveXObject) // Internet Explorer 
    		http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
    	else { // XMLHttpRequest non supporté par le navigateur 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		return; 
    	} 
     
    	if (!http_request) {
    		alert('Giving up :( Cannot create an XMLHTTP instance');
    		return false;
    	}
     
    	http_request.onreadystatechange = function() {
    		if(http_request.readyState==4 && http_request.status==200) {
    			alert(http_request.responseText); 
    		}
    	} 
     
    	http_request.open(method, url, true);
    	if(method=="POST")
    		http_request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
     
    	http_request.send("toto");
    }
    </script>
    <body>
    <form name="formulaire" method="post" action="index.php?page=verif">
    	<h1>Votre compte</h1>
    	<p>
    		Login&nbsp;:<br/>
    		<input name="login" type="text" class="login" id="login" value=""  onBlur="makeRequest('test.php')"/>
    	</p>
    </form> 
    </body>
    </html>
    Et le code de la fenêtre appelée :

    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    	"http://www.w3.org/TR/xhtml/DTD/XHTML1-STRICT.DTD3>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
    	<meta http-equiv="pragma" content="no-cache" />
    	<style type="text/css">
    		@import url(styles/design.css);
    	</style>
    	<title>Document sans nom</title>
    </head>
     
     
     
    <body>
    <?php
            if(count($_POST)>0) {
                    echo 'Données reçues en POST';
            }
            echo 'RIEN RECU';
    ?>
    </body>
    </html>
    Si quelqu'un une idée, ca m'aiderait

    Le lien pour tester : http://extros.dyndns.org/index.php?page=xmlhttprequest

    Il suffit de rentrer dans le champs et d'en ressortir...

    Laurent

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    tu es dans firefox ou ie ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Firefox et IE, j'ai le même pbl sur les 2. Je récupère tout le contenu du fichier avec les balises

  4. #4
    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 Re: XMLHttpRequest : Impossible de récupérer les données
    Citation Envoyé par laurent_ifips
    Je me lance avec XMLHttpRequest... Et là je bloque : Je récupère bien des données, mais avec toutes les balises ? Si j'applique innerHTML, bah ya plus rien
    Le fait que tu recuperes les données avec toutes les balises, c'est ce qu'il y a de plus normal. C'est comme ça que XHR fonctionne.

    Ensuite, comment as-tu essayé d'appliquer ton innerHTML? Si tu l'appliques au bon endroit, ça marche Attention, dans le cas présent tu recuperes la page cible sous forme de String (chaine de caractère), qui n'a pas de propriété innerHTML, du coup, celle-ci est vide....

    Donc la question est : que cherches tu à faire? (du point de vue métier, qu'est ce que ta page est sensée faire?)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Pour l'instant je teste juste si j'ai un retour, ma page php doit renvoyer 'Données reçues en POST', en réalité je reçois une page avec toutes les balises et le texte : RIEN RECU.
    Le coté positif c'est que j'ai réussi à établir un dialogue
    A terme je veux, dans un formulaire d'inscription, vérifier le champ d'un login à sa sortie, voir si celui-ci n'est pas déjà utilisé.

    Concernant inner, je l'utilise comme ca :

    alert(http_request.responseText.innerHTML);

    Ca m'affiche : undefined

    Voili, voila

    Tu peux tester ici : http://extros.dyndns.org/index.php?page=xmlhttprequest

  6. #6
    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 laurent_ifips
    Pour l'instant je teste juste si j'ai un retour, ma page php doit renvoyer 'Données reçues en POST', en réalité je reçois une page avec toutes les balises et le texte : RIEN RECU.
    Essaye de faire un send("toto=tata&titi=tutu"); Ca marchera peut-être. Es-tu sur de ton code PHP pour detecter POST/GET? (ça fait longtemps que j'ai pas fait de PHP...)

    Citation Envoyé par laurent_ifips
    Concernant inner, je l'utilise comme ca :

    alert(http_request.responseText.innerHTML);

    Ca m'affiche : undefined
    Ce qui est normal, car http_request.responseText est une chaine de caractère (dans laquelle il y a des balises, mais il n'empeche, c'est une chaine de caractère) et la propriété innerHTML sur une chaine, c'est undefined.

    Si tu fais "tata".innerHTML, tu t'attends à ce qu'il te renvoie undefined, c'est exactement pareil dans ce cas.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Cool,

    Ca marche avec send("toto=tata&titi=tutu"), j'y touche plus

    Par contre, comment je peux faire pour récupérer une chaine de caractère destinée a être affichée (du style : Ce login existe déjà) ?

    D'après ce que j'ai compris, du coté php je dois faire un echo : ca marche impec puisque pour tata et tutu je les récupère bien, par contre avec toutes les balises ?

    Merci

    Laurent

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    en admettant que tu ai un div avec un id 'tutu' dans ta page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('tutu').innerHTML = http_request.responseText;
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Je vais essayer ca de suite...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Yop,

    Ca marche nickel

    Merci à vous & have a good day

    Laurent

  11. #11
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par laurent_ifips
    Cool,

    Ca marche avec send("toto=tata&titi=tutu"), j'y touche plus

    Par contre, comment je peux faire pour récupérer une chaine de caractère destinée a être affichée (du style : Ce login existe déjà) ?

    D'après ce que j'ai compris, du coté php je dois faire un echo : ca marche impec puisque pour tata et tutu je les récupère bien, par contre avec toutes les balises ?

    Merci

    Laurent
    Petit conseil, ici tu récupère toutes les balises a cause de la structure de ta page
    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
     
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml/DTD/XHTML1-STRICT.DTD3>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
       <meta http-equiv="pragma" content="no-cache" />
       <style type="text/css">
          @import url(styles/design.css);
       </style>
       <title>Document sans nom</title>
    </head>
     
     
     
    <body>
    <?php
       if(count($_POST)>0) {
          echo 'Données reçues en POST';
       }
       echo 'RIEN RECU';
    ?>
    </body>
    </html>
    Si tu veux recevoir que la valeur de ton php, supprime toute les balises html.. elle ne servent a rien. XHR recoir ce qui est "printer" dans la page, donc c'est normal quil recoi les balises car elles sont "printer"


    Ce qui donne dans ta page .php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
       if(count($_POST)>0) {
          echo 'Données reçues en POST';
       }
       echo 'RIEN RECU';
    ?>
    Remoting Context Matters
    Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/10/2016, 17h27
  2. Impossible de récupérer les données
    Par Heroiik dans le forum Réseau
    Réponses: 3
    Dernier message: 08/08/2012, 11h56
  3. Impossible de récupérer les données XML avec JAX-RS
    Par Leaffy dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/04/2012, 11h50
  4. Réponses: 8
    Dernier message: 06/04/2011, 21h14
  5. Réponses: 5
    Dernier message: 17/11/2008, 17h29

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