Partage
  • Partager sur Facebook
  • Partager sur Twitter

2 requetes xhr

par le même objet semble ne pas passer dans mon cas ...

Sujet résolu
    17 octobre 2008 à 6:32:19

    Bonjour/Bonsoir tout le monde !

    C'est peut-être pas un très gros problème, mais il me gène relativement beaucoup ...

    La FAQ sur mon site est divisée en 2 parties, une en haut avec des images représentatives ayant un attribut onclick qui as pour valeur ma fonction javascript qui vas chercher le contenu de la section choisie (onclick) par l'utilisateur. Pour ce faire je passe l'ID de la section dans ma fonction js. Mais voila, quand je clique sur une image le contenu correspondant affiche parfaitement, mais si je clique sur une autre image pour changer de section rien ne ce passe :(

    Je voudrais simplement que ce soit possible, voici mon script un peu simplifié :

    <!--  
    function faq(id)
    {
    	var xhr = getXhr();
    	
    	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 = "<img src=\"design/img/ajax-loader.gif\" />";
    		}
            }
    	xhr.open("POST", "../get_faq.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send("faq=" + id + "");
    }
    function getData(sData)
    {
    var rep  = document.getElementById("rep");
    rep.innerHTML = sData;
    }
    //-->
    

    Contexte d'appel :
    <img src="design/img/faq/<?php echo $rows['img'];?>" title="<?php echo $rows['titre'];?>" alt="<?php echo $rows['titre'];?>" class="pointer" onclick="faq(<?php echo $rows['id'];?>);" />
    

    Page ciblé par l'instance xhr (même si je doute de son utilité dans ce contexte):
    <?php
    header("Content-Type: text/plain");
    
    if(!empty($_POST['faq']) && is_numeric($_POST['faq']))
    {
    $id = $_POST['faq'];
    
    require('fonctions.php');
    
    include('include/bdd_connect.inc.php');
    
    $select_faq = mysql_query('SELECT * FROM `faq` WHERE `id`='.$id.' ORDER BY `ordre` ASC');
    
    $nb = mysql_num_rows($select_faq);
    
    $row = mysql_fetch_assoc($select_faq);
    	
    	if($nb==0)
    	{
    	
    	echo 'Aucun r&eacute;sutat(s)!';
    	
    	}
    	else
    	{
    	
    	echo BeginBigPost($row['titre']);
    	
    	echo parse(makeHtmlSafe($row['contenu']));
    	
    	echo '<br /><p style="text-align:right"><a href="#header" style="font-weight:100;">Haut de page</a></p>';
    	
    	echo EndBigPost();
    	
    	}
    	
    include('include/bdd_deconnect.inc.php');
    
    }
    ?>
    


    Voila, c'est pas mal tout. Je n'ai pas de piste et je suis pas très doué en javascript alors tout aide est apprécié :D

    B3
    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2008 à 13:39:07

      Dans la console d'erreur (de firefox) t'as un bug ?

      C'est très louche ce problème :-° ...

      Qu'est-ce qui a l'id rep ?
      • Partager sur Facebook
      • Partager sur Twitter
        17 octobre 2008 à 19:14:43

        Merci à toi :)

        Mais non sous la console, aucune erreur. Idem sous la console IE. :(

        L'id rep est un peu plus bas dans le "contexte d'appel" mais j'avais oublier de le préciser :-°

        En gros c'est un <div id="rep"></div> dans lequel ce place la réponse xhr grâce à la fonction :

        function getData(sData)
        {
        var rep  = document.getElementById("rep");
        rep.innerHTML = sData;
        }
        


        Utilisé ici :
        if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
        		{
        				document.getElementById("loading").innerHTML = "";
        				getData(xhr.responseText); // utilisation de la fonction getData
        		}
        


        Et voila, merci de ton aide :)


        EDIT !!! : Tu m'as mis sur la bonne voie :D C'est réglé et c'était tout bête en plus :p mon <div id="loading"></div> était dans le <div id="rep"></div> Donc quand le contenu devais changer ça devais générer une erreur js car rep.innerHTML = sData; != div loading donc erreur js pour la prochaine requête :p !!!

        Tout marche, merci à toi et je dois dire que je me sens gêné de vous avoir dérangé pour ça >_<

        B3
        • Partager sur Facebook
        • Partager sur Twitter
          17 octobre 2008 à 19:34:08

          [...] Grilled

          Bonne continuation ;)
          • Partager sur Facebook
          • Partager sur Twitter

          2 requetes xhr

          × 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