Liens Ajax
Forum Programmation : Liens Ajax
Bonjour à tous.
J'ai créée un menu avec des liens au milieu gauche de ma page web.
J'ai utilisé la technique ajax pour que lorsque je clique sur un lien, la page
s'affiche sans qui yai un rechargement de la page, c-a-d tout en restant sur la même page.
Jusqu'ici tout va bien, mais le problème c'est que lorsque je fait un clique sur un de mes liens, la position de ma page remonte en haut , alors que moi je veux que ca reste toujours au milieu gauche, c-a-d l'endroit où mes menu sont placés
Merci
Bonjour,
La solution pourrait-être de mettre une ancre, et d'appeler la page avec l'ancre.
Tu créé une ancre appellée "menu" par exemple, et quand tu appelles ta page, tu appelles tapage.html#menu
Répondre à OmaR
| OmaR a écrit : Bonjour,
|
Salut Omar,
Je pense ne pas avoir très bien compris ta solution.
Ques tu veux dire par un ancre ??? un div ??
As-tu des exemples ?
Merci
une ancre en HTML : http://nephi.unice.fr/CoursHTML/coursp9.php
Edit: regarde la partie "Les liens vers une partie d'un document local"
Message édité par OmaR le 13-08-2007 à 22:10:54
Répondre à OmaR
| OmaR a écrit : une ancre en HTML : http://nephi.unice.fr/CoursHTML/coursp9.php
|
Salut,
J'ai créée l'autre topic car je pensais être plus clair et plus précis que celui-ci....merci comme même pour la réponse
| OmaR a écrit : une ancre en HTML : http://nephi.unice.fr/CoursHTML/coursp9.php
|
Merci Omar, ton lien m'a été utile.
Mais j'ai une autre petite question pour toi.
Comment je pourrais charger plus qu'une page avec la
balise <body onload=" "></body> ?
Pour l'instant je l'utilise avec une seule page qui se charge dés l'ouverture de ma page.
Ex: <body onload="page(1)"></body>
Merci
qu'appelles tu "charger" une page ?
Tu veux ouvrir une nouvelle page ?
Sinon, tu peux rajouter des instructions dans la balise, tu peux faire :
<body onload="page(1);page(2);page(3);"></body>
etc...
Répondre à OmaR
| OmaR a écrit : qu'appelles tu "charger" une page ?
|
Avec la fonction "page(num)", j'appelle un numéro page.
Et j'aimerai que dés que j'ouvre ma page d'accueil, les autres pages puissent se charger en même temps : page(1),page(2),etc...
| OmaR a écrit :
|
Je vais essayer ca, merci
Message édité par stephane81 le 16-08-2007 à 15:53:56
| OmaR a écrit :
|
J'ai essayé ta méthode, mais seulement page(3) qui est chargé, et non page(1) et page(2)
ça doit être parce que tu appelles une page en lui donnant un nom, et que tu la rappelles trois fois, donc c'est le dernier appel qui fonctionne.
Fais voir à quoi ressemble ta fonction page() sinon
Répondre à OmaR
| OmaR a écrit : ça doit être parce que tu appelles une page en lui donnant un nom, et que tu la rappelles trois fois, donc c'est le dernier appel qui fonctionne.
|
Non je l'appel pas trois fois.
Bon je t'explique comment ca se passe:
J'ai 2 pages html.
Sur la permiere page j'ai un body.
Dans le body j'ai:
<body onLoad="Page(1)"> code..............etc...</body>
Dés que je charge ma page d'accueil, il y'a une autre page qui se charge avec l'appel de la fonction Page(1), que je met dans un div afin que cette page soit placée à l'endroit où je veux.
Jusqu'ici ca fonctionne.
J'ai une deuxième page qui utilise le body de la première (Avec la fonction include), mais j'aimerais que sur cette deuxième page
je charge 2 autres pages que je vais positionner avec un div aussi.
Donc suite à ce que tu m'a dit, j'ai fait :
<body onload="page(1);page(2);page(3);"></body>
Sur ma page d'accueil j'ai bien une page qui s'affiche à l'aide
de la fonction Page(1). Sur la deuxième page seulement la fonction Page(3) qui est pris en compte et non Page(2)
Par curiosité, je pourrais voir le code de ta fonction page() ??
Cette fonction page s'exécute toujours dans le même div, ou en fonction du numéro passé, ça change de div ?
Message édité par OmaR le 19-08-2007 à 23:28:20
Répondre à OmaR
| OmaR a écrit : Par curiosité, je pourrais voir le code de ta fonction page() ??
|
function page(num)
{
getXhr();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
{
document.getElementById('num').innerHTML=xhr.responseText;
}
}
xhr.open("GET","get_page.php?num="+num,true);
xhr.send(null);
}
C'est simple, en fait, quand tu fais un document.getElementById('num'), tu récupères l'élément avec comme id="num", pas id="1", ou id="2", en fonction du numéro de page.
Il faudrait que tu fasses document.getElementById(num) pour avoir l'élément avec comme id="1", ou id="2", etc...
Car là, pour tes trois fonctions, tu les mets toutes dans le même élément, sauf que tu remplaces le contenu à chaque fois.
Répondre à OmaR
| OmaR a écrit :
|
Salut
Dés que j'enlève les Apostrophes, rien ne fonctionne !!!
As tu des éléments avec comme id égal à 1 ou égal à 2 dans ta page HTML ?
Répondre à OmaR
| OmaR a écrit : As tu des éléments avec comme id égal à 1 ou égal à 2 dans ta page HTML ? |
Le mieux c'est de te montrer tout mon code:
En gros ce que je veux faire c'est 2 menus dans une seule page.
Chaque menu contient 2 hyperliens.
Ca fonctionne bien avec firefox mais non avec internet Explorer.
(Comme presque toujours
):
Code :
|
Voici le contenu des pages que j'appele:
Page1.php:
Code :
|
Page2.php:
Code :
|
J'ai enlevé les ' ', dans
document.getElementById(num1).innerHTML=xhr.responseText;
, mais ca ne m'affiche rien.
Message édité par stephane81 le 04-09-2007 à 21:27:28
Et si tu remplaces document.getElementById('num1').innerHTML=xhr.responseText; par document.getElementById('menu1').innerHTML=xhr.responseText;
Et la même chose pour le 2
Répondre à OmaR
| OmaR a écrit : Et si tu remplaces document.getElementById('num1').innerHTML=xhr.responseText; par document.getElementById('menu1').innerHTML=xhr.responseText;
|
Le problème persiste toujours sous IE.
Ce qui est bizzare, c'est que ca fonctionne la première fois que je charge ma page d'accueil qui contient les menus, mais dés que je fait un refresh, les menus disparaissent !!!
IE n'aime pas les document.getElementById().
C'est trop chiant IE, je sais pas programmer pour IE, désolé
Répondre à OmaR
Il y a 1268 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
