Rechargement de page en Ajax. Mais en double

Fermé
Darius - 19 déc. 2010 à 21:59
Nic0- Messages postés 341 Date d'inscription samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 - 20 déc. 2010 à 00:33
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
19 déc. 2010 à 22:52
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
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
Ou alors dans ces cas là, comment récupérer le contenu de la div ?
0
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
19 déc. 2010 à 23:35
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
19 déc. 2010 à 23:37
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
C'est peut-être les liens PHP ?
0
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
20 déc. 2010 à 00:29
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
20 déc. 2010 à 00:31
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 samedi 15 août 2009 Statut Membre Dernière intervention 16 février 2011 44
20 déc. 2010 à 00:33
Sinon, cette fonction pourrait t'intéresser dans le même style:
https://api.jquery.com/load/
0