Rechargement de page en Ajax. Mais en double

Darius -  
Nic0- Messages postés 383 Statut Membre -
Bonsoir à tous !
Je suis en train de suivre un tutoriel pour actualiser le contenu de mes pages en AJAX, donc le contenu de la div : contenu justement.

Le soucis c'est que ça me charge ma page deux fois,
C'est à dire, que j'ai deux vois le header, et deux fois le footer !

Mes pages sont au format : index.php?page=inscription

// Vérifie que la page est bien chargée
$(document).ready(function(){
$("#footer a").click(function() {
// Variable avec l'url de la page
page=($(this).attr("href"));

// On fait une requête ajax

$.ajax ({
url : page,
cache: false,
success:function(html){
afficher(html);
},
error:function(XMLHttpRequest,textStatus, errorThrown) {
alert(textStatus);
}
})
return false;
});
});

// Fonction qui va permettre d'afficher le contenu

function afficher(data){
// On veut vider le contenu d'une div
$("#contenu").empty();
// On va afficher le nouveau contenu
$("#contenu").append(data);
}

Ou est le probleme ?
Merci à tous !

9 réponses

  1. Nic0- Messages postés 383 Statut Membre 44
     
    Salut,

    Je suis pas trop spécialiste, mais,

    Tu passes ta page complète en argument : « afficher(html); »
    Puis tu enlèves une partie, « $("#contenu").empty(); »
    Puis, tu rajoute à la suite de la div contenu, la totalité de ta page. « $("#contenu").append(data); »

    Donc ton résultat est logique oui, il faudrait je pense ne passer en argument que le contenu et non toute la page, (afficher();)
    Ou au contraire, au lieu de n'effacer que #contenu, effacer toute ta page, mais je pense que niveau ressource c'est moins performant.

    Ça devrait te donner des pistes à creuser. Désolé j'en sais pas forcément plus.
    0
  2. Darius
     
    Oui mais le soucis c'est que c'est ce qu'ils disent de faire ici :

    http://top-news.fr/ajax-avec-jquery-exemple-changement-du-contenu-d-un-div/
    0
    1. Darius
       
      Ou alors dans ces cas là, comment récupérer le contenu de la div ?
      0
    2. Darius
       
      J'ai rajouté
      var contenu = $("#contenu").html();

      Et donc j'ai fais un
      success:function(contenu){
      afficher(contenu);
      },

      Mais toujours pareil !
      0
  3. Nic0- Messages postés 383 Statut Membre 44
     
    J'ai regardé vite fait, si tu click directement sur les liens corrrespondant, tu tombes sur une page uniquement avec le contenu, en gros il n'y a pas de header sans sa page, il ne se soucis pas à parser le résultat donc.

    Exemple: http://top-news.fr/demos/ajax-jquery/contenu2.html
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Darius
     
    J'ai essayé en mettant

    var test = document.getElementById("contenu") ainsi qu'une alert quand je clique sur un lien ça affiche :
    [Object HTMLDivElement]
    0
  6. Nic0- Messages postés 383 Statut Membre 44
     
    Il utilise cette fonction pour la requete ajax, dans son exemple :
    https://api.jquery.com/jQuery.ajax/

    Ça devrait te donner des pistes.
    Le fait que les pages soit en html ou php n'auras pas d'influence sur le résultat.
    0
  7. Nic0- Messages postés 383 Statut Membre 44
     
    context:
    This object will be made the context of all Ajax-related callbacks. For example specifying a DOM element as the context will make that the context for the complete callback of a request, like so:

    $.ajax({ url: "test.html", context: document.body, success: function(){
            $(this).addClass("done");
          }});
    0