Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX] mon retour est toujours null

Sujet résolu
    12 avril 2009 à 13:31:45

    Bonjour tout le monde,

    J'ai cette liste de sélection :

    <select name="listChoix_annee" onchange="affichage(this.value)">
    		    <option>Choisissez une année</option> 
    			<option>G&eacute;n&eacute;ral</option>
    		    <option>BA1</option>
    		    <option>BA2</option>
    		    <option>BA3</option>
    		    <option>MA1</option>
    		    <option>MA2</option>
    	      </select>
    


    Sur chaque changement, j'appelle une fonction nommée affichage et je lui passe la valeur choisie de la liste de sélection.

    Voici le code de mon fichier javascript :

    function affichage(annee)
    {
    		//alert(annee);
    		//je crée un objet de type XMLHTTPREQUEST (j'appelle la fonction)
    		var xhr = getXMLHttpRequest();
    		// On défini ce qu'on va faire quand on aura la réponse
    		xhr.onreadystatechange = function()
    		{
    			//alert(xhr.readyState);
    			if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0 ) )
    			{
    				
    				xmlDoc=xhr.responseXML;
    				if(xmlDoc!=null)
    				{
    					document.getElementById("td_annee_de_cours").innerHTML=xmlDoc.getElementsByTagName("annee_cours")[0].childNodes[0].nodeValue;
    					document.getElementById("td_id").innerHTML=xmlDoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;
    					document.getElementById("td_date").innerHTML=xmlDoc.getElementsByTagName("date")[0].childNodes[0].nodeValue;
    					document.getElementById("td_date_expiration").innerHTML=xmlDoc.getElementsByTagName("date_validite")[0].childNodes[0].nodeValue;
    					document.getElementById("td_Titre").innerHTML=xmlDoc.getElementsByTagName("titre")[0].childNodes[0].nodeValue;
    					document.getElementById("Corps").innerHTML=xmlDoc.getElementsByTagName("corps")[0].childNodes[0].nodeValue;
    					document.getElementById("td_auteur").innerHTML=xmlDoc.getElementsByTagName("piece_jointe")[0].childNodes[0].nodeValue;
    					document.getElementById("td_lien").innerHTML=xmlDoc.getElementsByTagName("auteur")[0].childNodes[0].nodeValue;
    					document.getElementById("td_piece_jointe").innerHTML=xmlDoc.getElementsByTagName("lien")[0].childNodes[0].nodeValue;
    				}
    				else
    				{
    					alert("le retour est null");
    				}
    		
    			}
    		}
     
    		//Pour montrer une erreur, je pourrais retirer /PENDU et faire un alert de status
    		xhr.open("POST","../AJAX/affichage.php",true);
    		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    		xhr.send("annee="+annee);	
    	
    }
    


    J'arrive dans la fonction, l'alerte que j'ai mis en commentaire me l'a prouvé.

    Je passe donc une information (annee) au fichier php dont voici le code :

    <?php
    	header('Content-Type: text/xml');
    	header("Cache-Control: no-cache, must-revalidate");
    	//A date in the past
    	header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    	
    	include('../PHP/connexion.php');
    	$sql = "SELECT * FROM messages WHERE Annee = '".$_POST['annee']."' ORDER BY ID DESC";
    	//echo $sql;
    	$req = mysql_query($sql);
    	//echo $req; 
    	//include('../index/regreplace.php');	
    	
    	echo '<?xml version="1.0" encoding="ISO-8859-1"?>
    	<information>';
    	while($row = mysql_fetch_array($result))
    	{
    		echo "<annee_cours>" . $row['Annee'] . "</annee_cours>";
    		echo "<id>" . $row['ID'] . "</id>";
    		echo "<date>" . $row['Date'] . "</date>";
    		echo "<date_validite>" . $row['Date_Validite'] . "</date_validite>";
    		echo "<titre>" . $row['Titre'] . "</titre>";
    		echo "<corps>" . $row['Corps'] . "</corps>";
    		echo "<piece_jointe>" . $row['Piece_jointe'] . "</piece_jointe>";
    		echo "<auteur>" . $row['Auteur'] . "</auteur>";
    		echo "<lien>" . $row['Lien'] . "</lien>";
    	}
    	echo "</information>";
    	}
    ?>
    


    Dans le fichier js, j'ai fait ce test :

    if(xmlDoc!=null)
    				{
    


    J'obtiens à chaque fois l'alerte me disant que mon retour est null.

    Sauriez-vous me dire pourquoi j'obtiens à chaque fois un retour null ?

    Merci d'avance.

    beegees
    • Partager sur Facebook
    • Partager sur Twitter
      12 avril 2009 à 13:45:36

      Normal... this.value dans le onchange de ton select ne renvoie rien...
      Tout simplement parce que tu n'as pas mis de value à tes options...
      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2009 à 13:51:47

        Salut,

        Merci pour ta réponse et désolé pour cette erreur un peu idiote.

        Malheureusement, ça n'arrange pas mon problème, je n'obtiens aucun retour...

        Merci encore pour ton aide.

        beegees
        • Partager sur Facebook
        • Partager sur Twitter
          12 avril 2009 à 13:56:15

          T'as la fonction getXMLHttpRequest() où dans ta page ?
          • Partager sur Facebook
          • Partager sur Twitter
            12 avril 2009 à 14:01:07

            Re,

            J'appelle la fonction :
            var xhr = getXMLHttpRequest();
            


            j'ai mis le code dans la même fonction au cas où mais ça ne change rien :

            function getXMLHttpRequest() {
            	var xhr = null;
            	
            	if(window.XMLHttpRequest || window.ActiveXObject) {
            		if(window.ActiveXObject) {
            			try {
            				xhr = new ActiveXObject("Msxml2.XMLHTTP"); //IE
            			} catch(e) {
            				xhr = new ActiveXObject("Microsoft.XMLHTTP"); //IE
            			}
            		} else {
            			xhr = new XMLHttpRequest(); //firefox
            		}
            	} else {
            		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
            		return null;
            	}
            	
            	return xhr;
            }
            
            function affichage(annee)
            {
            		//alert(annee);
            		//je crée un objet de type XMLHTTPREQUEST (j'appelle la fonction)
            		var xhr = getXMLHttpRequest();
            


            Merci encore pour ton aide.
            beegees
            • Partager sur Facebook
            • Partager sur Twitter
              12 avril 2009 à 14:10:01

              Essayes sans passer par la variable xmlDoc.
              • Partager sur Facebook
              • Partager sur Twitter
                12 avril 2009 à 14:13:00

                Re,

                J'ai trouvé la solution.

                Il y avait une } en trop dans mon fichier php.

                Merci à tous ceux qui m'ont aidé.

                beegees
                • Partager sur Facebook
                • Partager sur Twitter

                [AJAX] mon retour est toujours null

                × 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