Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JQuery] Naviguer dans une réponse ajax

Comme on le fera directement dans le document

Sujet résolu
    11 juin 2010 à 22:55:24

    Bonjour,

    Après quelques recherche je n'arrive pas à trouver la solution à mon problème et je viens donc à vous pour m'aider.

    Voilà à un moment donné je veux modifié ma page actuelle par de nouvelles donnée que je charge grâce à l'ajax.

    Sauf que la page que je charge est full html (doctype et compagnie) hors moi je veux seulement certains éléments de ma page et pas forcément contigu. Donc ce que j'aimerai faire c'est tout simplement naviguer dans ma réponse comme je le ferai avec le DOM afin de récupéré les éléments que je désire et les mettre à jour dans ma page courante.

    Cependant comme je vous l'ai dit je n'ai pas réussi à obtenir le résultat escompté, lorsque je demande un résultat de type xml il m'envoie boulé (logique c'est de l'html) et lorsque je prend le résultat sous forme de texte je ne sais pas comment le convertir de façon à l'utiliser.

    Merci d'avance pour votre aide.
    Cordialement, La source.
    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2010 à 23:42:17

      Qu'est ce qui t'empeche de virer le doctype et tous les trucs inutiles de ta page appelee ?
      Parce que deja tout charger en AJAX -> plus de temps
      Manipuler le DOM -> encore plus de temps
      Tout ca pour une lisibilite moindre.

      Sache que si la page appelee est generee par PHP, tu peux faire un test pour voir si c'est une requete AJAX ou pas. Si oui tu ne renvoies que les infos pertinentes, si non tu renvoies tout (pour ceux qui ont desactive leur JS par exemple).

      <?php strtolower ($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ?>
      

      Cette variable vient du client et n'est donc pas 100% fiable.
      • Partager sur Facebook
      • Partager sur Twitter
        11 juin 2010 à 23:49:38

        Tu ne peux pas naviguer proprement dedans (Edit: Tu dois pouvoir en bidouillant les iframes éditables mais ça risque d'être long et pas joli à voir).

        Soit tu dois faire à coup d'expression régulière en mode barbare, soit tu revois la structure de ton site pour qu'il ne renvoi que la partie modifier.
        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2010 à 23:56:31

          @firekraag:
          C'est effectivement ce que j'avais pensé faire à un moment, cependant en fait j'aimerai ne pas devoir à avoir à savoir qui fait quoi.

          Je veux dire par la que le script que je code coté js ne dois pas dépendre d'une config spécifique coté serveur, enfin idéalement, de cette manière je peux transposé ce que je code maintenant sur un autre projet sans avoir à faire 36 modifications...

          Alors tu me dit que manipuler le dom est lourd... oui d'accord j'ai souvent vu cet argument, mais à quel point ? Car bon, lorsque l'on reçois une réponse xml et que l'on navigue dedans on utilise le dom et j'ai pas l'impression que c'est lent, même js lorsque je modifie des éléments via le dom... bah l'impacte reste limité.

          @Tiller:

          Mouai un truc pas propre c'est à oublié de toute façon ^^

          Et franchement je le sens pas nom plus le coup des regex...

          En fait coté js j'ai juste les ids des éléments que je dois mettre à jour, donc pour sa que la solution du DOM m'a parue évidente, sa aurai été tellement facile...


          Je vai attendre encore un peu après d'autres suggestions (qui sais :p) et s'il n'a rien de concluant va bien falloir que je change coté php).
          • Partager sur Facebook
          • Partager sur Twitter
            11 juin 2010 à 23:58:44

            Ben c'est plutot avec ma technique que tu n'auras pas a te prendre la tete a "savoir qui fait quoi". Dans ton PHP tu dois prevoir juste 2 choses : si la requete vient de AJAX ou pas. Et encore, plutot une chose et demie :
            <?php
            if (!blablaAJAX)
            {
               ?>
               <!DOCTYPE...>
               <html>
               <?php
            }
            ?>
            <div class="content">Coucou!</div>
            <?php
            if (!blablaAJAX)
            {
               ?>
               </html>
               <?php
            }
            ?>
            

            Avec ta methode, le jour ou tu rajoutes une div dans ta page appelee, tu vas devoir te faire chier a mettre a jour ton JS ?!?
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2010 à 0:01:27

              @firekraag: Pour le coup de la variable PHP je m'avoue septique. Est-ce que les vieux navigateurs implémentait ça ? J'ai des doutes.

              Je pense qu'il est plus raisonnable de rajouter une variable au moment de l'envoi AJAX avec genre tonurl + '&ajax=1'
              • Partager sur Facebook
              • Partager sur Twitter
                12 juin 2010 à 0:03:07

                Les navigateurs qui offrent AJAX implementent ce header, il fait partie des specifications. Apres un "h4x0r ololilol" pourra toujours le changer, faut garder ca en tete ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  12 juin 2010 à 0:04:07

                  Le js apprend de manière dynamique les ids qu'il doit gérer ;)

                  Et à nouveau je suis d'accord avec toi... dans le cadre d'un nouveau projet, si c'est un nouveau projet pas de soucis on tape sa en objectif et donc sa passera tous seul.

                  Mais dans le cas d'un ancien projet, avec des trucs codé +- à l'arrache, voir même des projets qui ne sont pas à soie mais que l'on veux mettre en place un truc de manière rapide... bah la sa peut rapidement devenir le parcours du combattant pour définir ce qu'il faut affiché ou non si on a eu une requête ajax ou normale...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 juin 2010 à 0:06:03

                    Je pense que deviner a l'avance la structure DOM generee par une page PHP codee pas par toi (et donc c'est pas dit qu'elle soit valide HTML...) pour anticiper une manipulation du DOM puis un affichage peut etre aussi relativement relou =D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 juin 2010 à 0:16:40

                      Eu quand je dis que le js apprend de manière dynamique ce qu'il dois géré on le lui dit quand même hein ^^ il va pas sucer de son pouce "cet élément la je dois gérer et pas celui la".

                      En fait, concrètement ce que je code pour le moment c'est un système de chat (un peu dans le genre de facebook), lorsque l'on veux chargé une page et bien à la place de la chargée de manière normal on va le faire via ajax, mettre à jour toute la page sauf le header et la zone de chat.

                      Alors dans des possible modifications future du système j'ai adapté en disant, je te donne la liste des ids que tu dois gérer pour la MaJ d'une page (souvent c'est 1 ou 2 conteneur globaux) et tu laisse le reste tranquille.

                      Après si vous avez d'autres solutions... je suis pas contre ;)

                      Edit:

                      Bon finalement j'ai réussi à créé un objet "parcourable" en passant par la méthode expliquée ici (enfin il faut un peut bidouiller évidement) http://www.ariel.web.id/blog/2007/06/0 [...] ml-to-string/
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [JQuery] Naviguer dans une réponse 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