IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Ajax adresse de la page


Sujet :

AJAX

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 34
    Points
    34
    Par défaut [AJAX] Ajax adresse de la page
    Bonjour,

    Ma question va peut être vous paraitre étrange, mais bon, je me lance.

    AJAX permet justement d'appeler une page sans rafraichir la page. Le problème, c'est qu'une fois qu'on a fait cela, l'adresse notée en haut du navigateur est toujours celle de la page de "base" donc, un petit F5 et on repart au début. De plus, si le visiteur souhaite envoyer une page précise a quelqu'un en copiant/collant l'adresse, y a bien des chances pour que les 2 ou 3 transformation ajax ne soient plus présents.

    Je vais prendre un exemple concret.

    Si j'ai une galerie photo sur la page magalerie.php et que je permet au visiteur de faire défiler mes photos en AJAX.

    Dès qu'il va se trouver sur une photo qu'il souhaite montrer a quelqu'un, il va copier l'adresse du haut, mais ça sera toujours magalerie.php, du coup retour a la case départ.

    Existe t-il une solution pour contrer ce problème ? Par exemple, réécrire l'adresse du haut (magalerie.php?id=1, id=2, id=xxx)

    Merci de votre aide

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Bonjour,

    La technique pour ce genre de problématique est d'utiliser les ancres. Admettons que tu développes un site où toute la navigation se fait via ajax (ce qui te permet de ne rafraichir que le contenu, pas le menu, ni le footer...).
    Le plus simple est à chaque fois que l'utilisateur clique sur un lien entrainant de la navigation, de changer le hash de sa page (document.location.hash) par exemple avec le contenu du href. Tu n'as plus alors qu'à observer régulièrement l'url pour détecter un changement de hash et réaliser ton traitement ajax. Le problème du copier coller d'url est de fait résolu (pourvu que le destinataire est bien javascript activé). Un autre avantage est que les boutons next/previous du navigateur permettent effctivement de naviguer dans l'historique AJAX.

    Une petite recherche de "navigation ajax" sur google devrait te donner des idées.
    Si tu utilises jQuery, le plugin history te sera d'une grande aide pour les navigateurs obsolètes (devinez de qui je parle ).
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    Hello,

    Merci pour ton aide.

    J'ai lu plusieurs articles / tutos sur la navigation en AJAX a l'aide des ancres.

    C'est très intéressant, mon souci c'est que j'ai trouvé plusieurs méthodes différentes plus ou moins compliquée.

    Étant débutant en JS, j'aimerai partir sur une bonne solution tout de suite et éviter de me perdre dans des solutions bricolage annexe.

    Pourrais-tu m'expliquer en peu plus en détail (ou m'orienter vers un tuto) une bonne méthode ?

    Merci encore

    BigZ

  4. #4
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par BigZ444 Voir le message
    C'est très intéressant, mon souci c'est que j'ai trouvé plusieurs méthodes différentes plus ou moins compliquée.
    Différentes en quel sens ? Elles se basent toutes sur l'observation du hash dans l'URL non ?
    Après concernant leur difficulté, tout dépend de la compatibilité de navigateurs... Si tu dois être compatible IE6+, tu vas effectivement devoir contourner des lacunes du navigateur par une iframe... mais pour celà, inutile de réinventer la roue, jette un oeil aux démos jquery du plugin history, ca te donnera de bonnes idées, et le code des démos est très simple.
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 72
    Points : 34
    Points
    34
    Par défaut
    Je suis désolé, mais je n'y arrive définitivement pas.

    Voilà en gros comment marche ma galerie photo.

    Un fonction JS qui recoit en paramètre l'id de ma galerie + l'id de ma photo, et qui ensuite appelle un script php (photo.php) qui va générer l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function photo(id_gal, id){   
         if (id_gal > 0) {  
             $.post('photo.php', 
             { id_gal:id_gal, id:id },
             function(data){
              $('#photo').fadeOut('slow', function() {
                $("#photo").html(data);
              });
              $('#photo').fadeIn('slow', function() {});
             }  
             );
          }  
      }
    Ensuite dans mon script photo.php je génère aussi des flèches de navigation comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:;" onClick="photo('.$id_galerie.','.$suiv.');"><img src="images/droite.gif" border="0" alt="Photo suivante" /></a>
    Quelqu'un peu m'aider ?

    Merci

Discussions similaires

  1. [AJAX] Code source d'une page générée dynamiquement
    Par Amnesiak dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2007, 18h06
  2. [AJAX] chargement infini de la page ..
    Par dada17 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2007, 15h01
  3. [AJAX] Afficher 3 messages par page dans un livre d'or
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/11/2006, 11h17
  4. [AJAX] Ouvrir en local une page
    Par Emcy dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/11/2006, 08h57
  5. [AJAX] Mise à jour d'une page après réception d'une requête
    Par M.Dlb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/11/2006, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo