Partage
  • Partager sur Facebook
  • Partager sur Twitter

Include ajax

Sujet résolu
    12 avril 2009 à 23:54:04

    BOnsoir. Voila l'ajax est devenu incoutournable et j'essai de faire un type d'include avec les techniques ajax. J'ai monté mon code mais cela ne fonctionne pas :s Voyez vous-même :

    script javascript :
    function getXhr()
    {
        if(window.XMLHttpRequest)xhr = new XMLHttpRequest(); 
    	else if(window.ActiveXObject)
    	{ 
    	try{
    		xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} catch (e) 
    		{
    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else 
    	{
    	  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	  xhr = false; 
    	} 
    }
    function test()
    {
    
    	getXhr();
    	xhr.onreadystatechange = function()
        {
         if(xhr.readyState == 4 && xhr.status == 200)
         {
    		document.getElementById('contenu').innerHTML=xhr.responseText;
    		alert(xhr.reponseText);
         }
        }
    xhr.open("GET","ajax.php",true);
    xhr.send(null);
    
    
    }
    


    La page principale contient ca :
    <div id="contenu">
    </div>
    


    La page appelée par le javascript :
    <?
    	if(isset($_GET['go']))
    	{
    		require 'bloc_membre.php';
    		echo bouh;
    	}
    ?>
    


    Voila, je ne sais pas comment interpréter le résultat du xhr je pense.
    • Partager sur Facebook
    • Partager sur Twitter
      13 avril 2009 à 0:01:45

      Bonsoir,
      Par curiosité, pourquoi n'utilises-tu pas une librairie ? Ça simplifie beaucoup le travail ...
      • Partager sur Facebook
      • Partager sur Twitter
        13 avril 2009 à 0:22:49

        J'apprends à maîtriser les techniques ajax et utiliser une librairie ne serait pas constructif ^^

        Edit : j'ajoute que le alert(xhr.reponseText); me renvoit undefined.
        • Partager sur Facebook
        • Partager sur Twitter
          13 avril 2009 à 0:44:25

          C'est normal, explications.
          Bon déjà dans les bonnes pratiques, il ne faut pas définir des variables comme tu le fais car en Javascript, ce sont les fonctions qui définissent la portée des variables. Si tu ne mets pas le mot clé var devant, la portée de la variable est globale.
          Donc en premier, déclare le xhr pour que ce soit une variable interne à ta fonction getXhr(). Ensuite tu fais ton traitement et bien sur, la fonction retourne ce xhr, chose que tu n'as pas faite.

          function getXhr()
          {
              var xhr = null;
              if(window.XMLHttpRequest)xhr = new XMLHttpRequest(); 
          	else if(window.ActiveXObject)
          	{ 
          	try{
          		xhr = new ActiveXObject("Msxml2.XMLHTTP");
          		} catch (e) 
          		{
          		xhr = new ActiveXObject("Microsoft.XMLHTTP");
          		}
          	}
          	else 
          	{
          	  alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
          	  xhr = false; 
          	} 
               return xhr;
          }
          
          function test()
          {
          
          	var xhr = getXhr(); // Pareil ici, tu définis un xhr interne à la fonction test qui sera utilisé ci après. Sinon ça n'a plus aucun sens.
          	xhr.onreadystatechange = function()
              {
               if(xhr.readyState == 4 && xhr.status == 200)
               {
          		document.getElementById('contenu').innerHTML=xhr.responseText;
          		alert(xhr.reponseText);
               }
              }
          xhr.open("GET","ajax.php?go=COUCOU",true); // Bon l j'ai mis coucou mais après libre à toi de faire passer un paramètre à la fonction et de l'appeler ici : "ajax.php?go="+variable
          xhr.send(null);
          
          }
          


          Ton code PHP ne pouvait pas fonctionner puisque la variable go n'existait pas.
          J'espère que ça t'as éclairé.
          • Partager sur Facebook
          • Partager sur Twitter
            13 avril 2009 à 0:57:12

            Pour le go je sais, c'était un test que je n'avais pas modifié en le postant.
            Par contre je me sens un peu con d'avoir oublié le return^^ on va mettre ça sur le compte de l'heure.


            Edit : le problème vient du php..

            <?php j'avais écrit <? ^^

            Merci de ton aide et à la prochaine.
            • Partager sur Facebook
            • Partager sur Twitter
              13 avril 2009 à 0:58:19

              Ah oui, je l'avais corrigé chez moi, mais j'ai oublié de te le signaler ;)
              • Partager sur Facebook
              • Partager sur Twitter

              Include 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