Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème AJAX (XMLHttpRequest)

xhr.responseXML est null

    22 août 2011 à 16:58:26

    Bonjour à tous j'ai réalisé un petit formulaire avec traitement en AJAX dont voici le code source :
    La page formulaire,
    <html>
    <head>
    <title> Un essai de formulaire en AJAX </title>
    <script type="text/javascript" src="oXHR.js"></script>
    <script type="text/javascript">
    function request(callback) {
    var xhr = getXMLHttpRequest();
    var pseudo = encodeURIComponent(document.getElementById("pseudo").value);
    var nom = encodeURIComponent(document.getElementById("nom").value);
    
    xhr.onreadystatechange = function() {
    	if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    		callback(xhr.responseXML);
    	}
    };
    xhr.open("GET", "XMLHTTP_getFormulaire.php?pseudo=" + pseudo + "&nom=" + nom, true);
    xhr.send(null);
    }
    
    function readData(tData)
    {
    	var paragraph, cn;
    	var nodes = tData.getElementsByTagName("message");
    	paragraph = createElement("p");
    	cn = createTextNode(nodes[0].getAttribute("name"));
    
    	paragraph.appendChild(cn);
    	document.getElementById("success").appendChild(paragraph);
    }
    </script>
    </head>
    
    <body>
    <div id="div_formulaire" style="display:block">
    <form id="inscription">
    Pseudo : <input type="text" id="pseudo" /> <br />
    Prenom : <input type="text" id="nom" /> <br />
    <button id="send" onclick="request(readData);"> M'inscrire ! </button>
    </form>
    </div>
    
    <div id="success"></div>
    
    </body>
    </html>
    


    avec la page de traitement php 'XMLHTTP_getFormulaire.php',
    <?php
    header("Content-Type: text/xml");
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    
    if(isset($_GET['pseudo']) && isset($_GET['nom']))
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=cs-france', 'root', '');
    	$req = $bdd->prepare('INSERT INTO test_ajax SET pseudo = :pseudo, nom = :nom');
    	$req->bindValue(':pseudo', $_GET['pseudo']);
    	$req->bindValue(':nom', $_GET['nom']);
    	$req->execute();
    
    	echo '<message name="Inscription reussi tout bien correctement" />';
    }
    else
    {
    	echo '<message name="Fail" />';
    }
    ?>
    


    La requête a l'air de fonctionner puisque les champs sont correctement insérés dans la base de données, malheureusement rien ne s'affiche dans la div sensée recevoir ce XML.
    Après un petit tour dans la console d'erreur d'Iceweasel(Firefox sous debian) et quelques alert, j'ai découvert que xhr.responseXML vallait null.
    Je ne vois vraiment pas d'où pourrait venir cette erreur,
    Si jamais vous trouvez :D (ça peut être une erreur dans mon code :-° )

    Merci d'avance ;)
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2011 à 18:28:18

      ben oui c'est xhr.responseText et pas XML... :p
      • Partager sur Facebook
      • Partager sur Twitter
        22 août 2011 à 18:43:50

        Non c'est bien xhr.responseXML pour récupérer les données sous forme d'arbre XML.
        • Partager sur Facebook
        • Partager sur Twitter
          22 août 2011 à 18:52:55

          tu as bien testé avec xhr.responseText?
          • Partager sur Facebook
          • Partager sur Twitter

          Problème AJAX (XMLHttpRequest)

          × 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