Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JS] Ajax, changement de page dynamique ou mon cauchemar.

XMLHttpRequest

Sujet résolu
    2 octobre 2008 à 21:41:07

    Bonjour à tous !
    J'ai fait un chargement d'images (d'ailleurs qui ne charge pas les image... [script] pour ceux qui veulent m'aider...). Je ne recharge pas la page après avoir fini le chargement, une fonction s'occupe donc via ajax de charger un autre contenu:
    function chargePage(page) {
            var xhr = getXMLHttpRequest();
     
            if(xhr && xhr.readyState != 0) {
                    xhr.abort(); 
            }
     
            xhr.onreadystatechange = function() { 
                    if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                            document.getElementById("global").innerHTML = xhr.responseText;
                    } else if(xhr.readyState == 2 || xhr.readyState == 3) {
                            document.getElementById("loading").innerHTML = "Chargement de la page suivante en cours...";
                    }
            }
            xhr.open("GET", page, true);
            xhr.send(null);
    }
    function getXMLHttpRequest() {
            var xhr = null;
    
            if(window.XMLHttpRequest || window.ActiveXObject) {
                    if(window.ActiveXObject) {
                            try {
                                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                            } catch(e) {
                                    xhr = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                    } else {
                            xhr = new XMLHttpRequest();
                    }
            } else {
                    alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
                    return null;
            }
     
            return xhr;
    }
    


    Alors j'ai un joli bug...
    Déjà un <div> qui ne s'affiche pas...
    Le code html renvoyé est bien:
    <div id="autre1">
    <div id="autre">
    	<div id="barre">
    		<div class="gauche"></div>
    		<div class="droite"></div>
    		<div class="centre"></div>
    	</div>
    	<div id="administrer" onClick="javascript:demarrer()"></div>
    	<div id="menu">
    	<div class="haut">
    		<div class="bas">
    			<div class="texte">
    			<ul>
    				<li><a href="javascript:fenetre_test();demarrer();">Articles</a></li>
    				<li><a href="">Ajouter un article</a></li>
    				<li><a href="">Mes images</a></li>
    				<li><a href="">Catégories</a></li>
    				<li><a href="">Commentaires</a></li>
    				<li><a href="">Statistiques</a></li>
    				<li><a href="">Paramètres</a></li>
    				<li><a href="">Aide</a></li>
    			</ul>
    			</div>
    			<a href="http://yourbloug.com/blougs/index.php"><div id="deconnexion"></div></a>
    		</div>
    	</div>
    	</div>
    </div>
    </div>
    

    Mais le premier div ne passe pas o_O
    Pire, le css que j'ai appliqué au second ne passe pas non plus !
    Pour tester je vous propose d'aller là:
    http://yourbloug.com/connexion.php
    login: S@suke
    mot de passe: koukou


    Je suis bien embêté avec tous ses bugs sur lesquels je réflexionne depuis longtemps...

    Merci d'avance pour votre aide. (aussi incertaine soit-elle, n'hésitez pas !)
    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2008 à 16:42:00

      Je viens d'essayer (au passage, l'admin a l'air très conviviale, bravo) mais il n'est pas possible de trouver l'erreur comme cela, ça serait bien si on pouvait avoir le fichier PHP ;) .
      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2008 à 16:45:38

        <?php
        include('libs/php/top.php');
        if(empty($_GET['charge'])) {
        $tpl->parse('chargement2.tpl');
        
        } elseif($_GET['charge'] == 'ok') {
        //Partie concernée
        header('Content-type: text/html; charset=iso-8859-1');
        $tpl->parse('index2.tpl');
        
        } else {
        //erreur
        echo 'erreur';
        }
        ?>
        

        Voici le code PHP.
        Tu peux tester en affichant index.php?charge=ok, ça fonctionne parfaitement.
        Je ne comprends vraiment pas ce bug.

        Merci pour le compliment sur l'administration, je me donne beaucoup de mal (je suis tout seul) donc ça me fait extrêmement plaisir (même si ce n'est qu'un début ;) ).
        (et sinon pour le problème des images je veux bien de l'aide aussi.. c'est terriblement frustrant de pas arriver à charger une image.. à mon niveau mdr)
        • Partager sur Facebook
        • Partager sur Twitter
          3 octobre 2008 à 16:54:02

          Essaye avec ce header dans ta page php :

          <?php header('Content-type:text/plain;charset=iso-8859-1'); ?>
          


          Concernant ton système de chargement des images ça fait un moment que je l'avais vu mais je n'ai pas trop planché dessus dans l'immédiat, je vais regarder :) .
          • Partager sur Facebook
          • Partager sur Twitter
            3 octobre 2008 à 16:59:20

            C'est exactement la même chose.
            J'ai modifier le code, tu peux tester ;) .

            Pour mon chargement d'image j'ai beaucoup avancé sur dévelopez... (mais ils sont pas trop chaud non plus :lol: )
            • Partager sur Facebook
            • Partager sur Twitter
              3 octobre 2008 à 17:19:35

              Dis-moi, dans ton fichier PHP tu récupères le contenu de la variable $_GET['charge'] or je constate que ta requête Ajax n'envoie en aucun cas le contenu de cette variable. À moins que tout soit intégré dans la variable "page" mais je n'ai pas réussi à trouver ça dans tout ton code :p .

              Si j'ai raison, tu vas me dire que dans ce cas il est censé s'afficher "erreur" mais j'ai un doute sur cela car tu as écris if(empty($_GET['charge'])) or si la variable n'existe pas, cette fonction renvoie true. Donc dans ce cas c'est le fichier "chargement2.tpl" qui est censé s'afficher, est-ce qu'il ne serait pas vide à tout hasard ? Ça expliquerai bien des choses ^^ .

              Au passage, pour la fonction empty() je te conseille de faire attention quand tu l'utilises, comme je t'ai dit, elle renvoie true si la variable n'existe pas. Pour tester l'existence d'une variable cette fonction convient très bien mais pour tester son inexistence alors emploie plutôt isset().
              • Partager sur Facebook
              • Partager sur Twitter
                3 octobre 2008 à 17:29:02

                Pour empty et isset je gère, ne t'en fais pas ;) (des années de galères avec sont derrière moi :D ).

                Pour ce qui est de la page appellé c'est bien inclu directement dans la variable page ;) .

                Donc au final rien n'est expliqué :-° .

                Le script JS est par là: http://www.yourbloug.com/mbr2/libs/js/chargement3.php
                • Partager sur Facebook
                • Partager sur Twitter
                  5 octobre 2008 à 0:50:48

                  Bon, je ne trouve pas le problème >_< . Cependant, je voulais au moins te prévenir d'un truc : quand je suis sur ton administration j'ai divers ralentissements au niveau de Firefox, il se met à pomper plus de ressources qu'à la normale ;) .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 octobre 2008 à 10:32:12

                    Hum...
                    Je verrais ça quand elle sera finie, c'est louche pour l'instant le code n'est pas très imposant...

                    Bon il faut que je réfléchisse pour trouver une réponse à mes questions seul donc... Arg.

                    [vais penser à trouver un développeur ajax pour m'aider aussi xD]

                    Pour l'histoire de l'image je vais faire tout plein de tests, j'espère arriver à quelque chose :euh: ...


                    Merci de t'être penché sur mon problème quand même !

                    [edit] J'ai trouvé pour l'histoire du ralentissement.. On va voir ce que ça donne..
                    [edit2] J'allucine impossible de résoudre le bug du ralentissement, même en fermant tous les interval n'importe où :o ...
                    C'est peut-être pas si hors sujet que ça.. ?!
                    [je t'aurais bien emmerdé via skype mais t'existes pas :lol: ]
                    [edit3]"raaaah" J'ai essayé en DOM (des fois que ça marche mieux) bah non, rien...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 octobre 2008 à 12:34:03

                      Citation : Attonde

                      [je t'aurais bien emmerdé via skype mais t'existes pas :lol: ]


                      Ben si... regarde mon profil, c'est écrit ^^ .

                      Image utilisateur
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 octobre 2008 à 12:42:34

                        Résolu.

                        Je suis trop débile, j'ai juste honte... (firefox m'a pas aidé sur ce coup >_< )
                        Le problème est en css, j'ai rajouté le div "global" oui mais j'avais oublié de le <acronym title="stylisé (cssé)">céhèsèsé</acronym> donc en fait le fond s'affichait pas.. Trop bête hein ?

                        Et je pensais à un bug parce que firefox me sortais pas tout le code qu'il recevait !

                        Allé on attaque le fameux ralentissement :p .

                        Merci et désolé à Nequik69 qui a essayé de m'aider..
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 octobre 2008 à 12:48:53

                          'Tain mais j'avais pourtant regardé dans le CSS... fail quoi o_O !

                          Bon bah tant mieux que ça soit résolu ^^ .
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [JS] Ajax, changement de page dynamique ou mon cauchemar.

                          × 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