Rechargement de page en Ajax. Mais en double

Darius -  
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   -
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 !
A voir également:

9 réponses

Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   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
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
Darius
 
Ou alors dans ces cas là, comment récupérer le contenu de la div ?
0
Darius
 
J'ai rajouté
var contenu = $("#contenu").html();

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

Mais toujours pareil !
0
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   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
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   44
 
Regarde peut être de ce côté là pour ne sélectionner que la partie contenu de ta page :
https://api.jquery.com/id-selector/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zero
 
C'est peut-être les liens PHP ?
0
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
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   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
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   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
Nic0- Messages postés 341 Date d'inscription   Statut Membre Dernière intervention   44
 
Sinon, cette fonction pourrait t'intéresser dans le même style:
https://api.jquery.com/load/
0